1. 程式人生 > 實用技巧 >每日一題20201221(746. 使用最小花費爬樓梯)

每日一題20201221(746. 使用最小花費爬樓梯)

746. 使用最小花費爬樓梯

思路

用動態規劃的思想去做, 只要跳到倒數第二階和倒數第一階的時候,可以完成跳躍操作。

維護一個數組,存放跳到每階時候的最小花費。設到i階的時候,它有可能是從i-2階跳上來的,也可能是i-1跳上來的,所以:

f(i) = min(f(i-1)+cost[i], f(i-2)+cost[i])

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        dp = [0] * len(cost)
        for n in range(len(cost)):
            # 選取起點
            if n < 2:
                dp[n] = cost[n]
            else:
                dp[n] = min(dp[n-1]+cost[n], dp[n-2]+cost[n])
        return min(dp[len(cost)-1], dp[len(cost)-2])

擴充套件

你能優化下記憶體