美文网首页
leetcode 746 使用最小花费爬楼梯

leetcode 746 使用最小花费爬楼梯

作者: Arsenal4ever | 来源:发表于2020-02-22 23:28 被阅读0次

    写 dp 的老方法,推到出到达当前楼梯花费最小体力的公式 attach[n] = min(attach[n-1]+cost[i-1], attach[i-2]+cost[i-2])

    使用老 dp 解法是维护个数组,可是从推导式中可以看出,attach[n] 只与未知的 attach[n-1]attach[i-2]有关,所以我们可以只维护这两个变量。

    老 dp 维护数组解法:

    class Solution(object):
        def minCostClimbingStairs(self, cost):
            """
            :type cost: List[int]
            :rtype: int
            """
            cost.append(0)
            attachLadderCost = [0] * len(cost)
    
            for i in range(2, len(cost)):
                attachLadderCost[i] = min(attachLadderCost[i-2]+cost[i-2], attachLadderCost[i-1]+cost[i-1])
            return attachLadderCost[len(cost)-1]
    

    维护两个变量解法:

    class Solution(object):
        def minCostClimbingStairs(self, cost):
            """
            :type cost: List[int]
            :rtype: int
            """
            p1, p2 = 0, 0
            for i in range(2, len(cost)):
                p1, p2 = p2, min(p2 + cost[i-1], p1 + cost[i-2])    # 可画图,一画图就懂
            return p2
    

    相关文章

      网友评论

          本文标题:leetcode 746 使用最小花费爬楼梯

          本文链接:https://www.haomeiwen.com/subject/fetdqhtx.html