leetcode每日一题(2020-06-13):70.爬楼梯

题目描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。

今日学习:
1.js初始化数组不同方法的区别


题解:见过类似的题,动态规划没跑,数组或者常数存变量

//n-2层有A种方法,n-1层有B种方法,n层只能由n-2层或n-1层上来,所以有A+B种方法
//即动规数组dp[i] = dp[i-1] + dp[i-2]
var climbStairs = function(n) {
    // 数组【注意new Array()的性能要优于[]】
    // const dp = new Array(n).fill(0)
    // dp[0] = 1
    // dp[1] = 2
    // for(let i = 2; i < n; i++) {
    //     dp[i] = dp[i - 1] + dp[i - 2]
    // }
    // return dp[n - 1]

    // 常数空间【不能忘了0和1的特殊情况】
    if(n == 0 || n == 1) return n
    let pre = 1, cur = 2, i = 2
    while(i < n) {
        let temp = cur
        cur = cur + pre
        pre = temp
        i++
    }
    return cur
};
原文地址:https://www.cnblogs.com/autumn-starrysky/p/13111915.html