meishaoming / blog

MIT License
1 stars 2 forks source link

leetcode-746. 使用最小花费爬楼梯 #86

Open meishaoming opened 4 years ago

meishaoming commented 4 years ago

https://leetcode-cn.com/problems/min-cost-climbing-stairs/

题目的意思就是遍历数组取元素,可以逐个取,也可以隔一个取,求取出元素相加的值最小。

对于数组第 n 个元素,假设它是取出的最后一个元素,那么此时的最小总值为前面两个元素的最小总值 + 当前元素值,即有:

dp[n] = min(dp[n-1], dp[n-2]) + cost[n]

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        a, b = 0, 0
        for x in cost:
            a, b = b, min(a, b)+x
        return min(a, b)
image