爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢
1 DP数组
function clipStar(n) {
if (n === 0) {
return 0
}
if (n === 1) {
return 1
}
if (n === 2) {
return 1
}
let dp = [0, 1, 1]
for (let i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2]
}
return dp[n]
}
2 维护下标
由于不用记录两个以前的数据,只需要记录前两个数字,使用下标记录
function clipStar(n) {
let s1 = 1
let s2 = 1
let sum = 1
for(let i=3; i<=n; i++) {
sum = s1 + s2
s1 = s2
s2 = sum
}
return sum
}