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 <= 10000 <= 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 {  |