leetcode 746.使用最小花费爬楼梯 python

leetcode 746.

题目描述

在这里插入图片描述

题解

先分析一下题目,就是一次可以跳一级或跳两级,这个就和 青蛙跳台阶 那题很像,只不过这里每一级加了一个花费。
思路:
(结合下图看)求到达当前阶梯C的耗费时,有两种可能:从s1跳两级上来;从s2跳一级上来。那么选择跳两级还是跳一级呢?就选耗费小的那一种方法,也就是min(s1,s2). s1和s2表示到达它们所在的楼梯的最小耗费。
C = cost[i] + min(s1,s2).
再走到下一个楼梯,s1就是之前的s2,s2就是之前的C…
这样一直循环到最后一级楼梯,这时结果并不是C,因为要到达终点(跳出cost数组),可以选择从黄色s1跳两级或者从黄色s2跳一级。所以选择耗费最小的,也就是min(s1,s2)。
在这里插入图片描述
上代码

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        s1,s2 = 0,0
        for i in range(len(cost)):
            c = cost[i] + min(s1, s2)
            s1 = s2
            s2 = c
        return min(s1, s2)

时间复杂度:O(n)

发布了28 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xxx_gt/article/details/105027182