每日一題20201221(746. 使用最小花費爬樓梯)
阿新 • • 發佈:2020-12-21
思路
用動態規劃的思想去做, 只要跳到倒數第二階和倒數第一階的時候,可以完成跳躍操作。
維護一個數組,存放跳到每階時候的最小花費。設到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])
擴充套件
你能優化下記憶體