var climbStairs = function(n) { if (n <= 2) return n; const dp = newArray(n + 1).fill(0); dp[0] = 1; // 初始状态 dp[1] = 1; for (let i = 2; i <= n; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n]; };
时间复杂度:O(n)
空间复杂度:O(n)(存储整个 dp 数组)
(2) 优化空间(空间复杂度 O(1))
1 2 3 4 5 6 7 8
var climbStairs = function(n) { if (n <= 2) return n; let a = 1, b = 2; // a=dp[i-2], b=dp[i-1] for (let i = 3; i <= n; i++) { [a, b] = [b, a + b]; // 状态转移 } return b; };