每日一题20201221(746. 使用最小花费爬楼梯)

746. 使用最小花费爬楼梯

每日一题20201221(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])

每日一题20201221(746. 使用最小花费爬楼梯)

扩展

你能优化下内存
上一篇:746. 使用最小花费爬楼梯


下一篇:[LeetCode] 746. Min Cost Climbing Stairs