746. 使用最小花費爬樓梯

WrRan發表於2024-09-13
題目連結 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))

相關文章