题目描述:
假设你正在爬楼梯。需要 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
};