题目链接 | 746. 使用最小花费爬楼梯 |
---|---|
思路 | 动态规划 |
题解链接 | 教你一步步思考动态规划:从记忆化搜索到递推(附题单)Python/Java/C++/Go/JS/Rust |
关键点 | 1. \(dp(i) = min(dp(i-1) + cost_{i-1}, dp(i-2) + cost_{i-2})\) 2. \(dp(1) = 0\) |
时间复杂度 | \(O(n)\) |
空间复杂度 | \(O(n)\) |
代码实现:
class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:@cachedef dfs(i):if i <= 1:return 0return min(dfs(i-1)+cost[i-1], dfs(i-2)+cost[i-2])return dfs(len(cost))