climbStairs
爬楼梯问题 - 计算爬到楼顶有多少种不同方法。
输入配置
执行过程
初始化:dp[1]=1, dp[2]=2
阶数1
1
阶数2
2
当前计算
规律: 斐波那契数列
算法说明
爬楼梯问题:每次可以爬1或2个台阶,求爬到n阶的方法数。本质是斐波那契数列。时间复杂度O(n),空间复杂度O(1)。
函数签名
typescript
function climbStairs(n: number): number
function minCostClimbingStairs(cost: number[]): number参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
n | number | 是 | 楼梯阶数 |
cost | number[] | 是 | (变种)每阶的花费 |
返回值
| 类型 | 说明 |
|---|---|
number | 方法数或最小花费 |
工作原理
climbStairs
本质是斐波那契数列:
dp[i] = dp[i-1] + dp[i-2]- 空间优化: 只需保存前两个值
时间复杂度: O(n)
空间复杂度: O(1)
minCostClimbingStairs
计算爬到楼顶的最小花费:
- 可以从第0阶或第1阶开始
dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])
时间复杂度: O(n)
空间复杂度: O(1)