LeetCode-746.爬楼梯最小花费
题目描述
给你一个整数数组 cost ,其中 cost[i]
是从楼梯第i
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0
或下标为 1
的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
示例
1 | 输入:cost = [10,15,20] |
1 | 输入:cost = [1,100,1,1,1,100,1,1,100,1] |
提示
2 <= cost.length <= 1000
0 <= cost[i] <= 999
题解
使用动态规划思想:
要到达第i
级台阶的上面,可以是从i-1
级台阶跨1步上去f(i-1) + cost[i - 1]
,也可以是从i-2
级台阶上跨2步上去f(i-2)+cost[i-2]
,所以 f[i]=min(f(i−1)+cost[i−1],f(i−2)+cost[i−2])
。
1 | func minCostClimbingStairs(_ cost: [Int]) -> Int { |