原题
https://leetcode-cn.com/problems/climbing-stairs/
解题思路
用 F[n] 表示当有 n 阶楼梯时的路线数。
F[n] = F[n-1] + F[n-2] (因为从第 n - 1 和 第 n - 2 阶都可以一步到达楼顶)
即:F[n] 是斐波那契数列的第 n - 1 项。
代码
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
if (n < 3) return n;
let a = 1, b = 1;
while (--n >= 0) {
const c = b;
b = a + b;
a = c;
}
return a;
};
复杂度
- 时间复杂度 O(N)
- 空间复杂度 O(1)
网友评论