使用最小花费爬楼梯
题目描述
题目链接:746. 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
示例1:
1 | 输入:cost = [10,15,20] |
示例2:
1 | 输入:cost = [1,100,1,1,1,100,1,1,100,1] |
提示:
2 <= cost.length <= 1000
0 <= cost[i] <= 999
我的题解
方法一:动态规划
思路
当爬到第n阶楼梯时,有两种方法可以到达:
- 从n-1阶楼梯爬1阶到第n阶
- 从n-2阶楼梯爬2阶到第n阶
设dp[i]为爬到第i层的最小花费,则动态规划公式为:dp[i] = Math.min( dp[i-1] + dp[i-2] ) + cost[i]
因为当前状态只依赖前两个状态,因此,可以使用变量优化
代码
1 | class Solution { |
结果
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:40.9 MB, 在所有 Java 提交中击败了69.45%的用户
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 狼族少年、血狼!