題目連結 | 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:
@cache
def dfs(i):
if i <= 1:
return 0
return min(dfs(i-1)+cost[i-1], dfs(i-2)+cost[i-2])
return dfs(len(cost))