描述:给你一个整数数组 cost
,其中 cost[i]
是从楼梯第 i
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0
或下标为 1
的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
示例 1:
输入:cost = [10,15,20]
输出:15
解释:你将从下标为 1 的台阶开始。
- 支付 15 ,向上爬两个台阶,到达楼梯顶部。
总花费为 15 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/min-cost-climbing-stairs
方法一:使用常规的动态规划算法
l=[0 for each in range(len(cost))]
l[1]=min(cost[0],cost[1])
for i in range(2,len(cost)):
l[i]=min(cost[i]+l[i-1],l[i-2]+cost[i-1])
print(l[-1])
方法二:
for i in range(2,len(cost)):
cost[i]=min(cost[i-1],cost[i-2])+cost[i]
print(min(cost[-1],cost[-2]))