0746. Min Cost Climbing Stairs #
题目 #
-
给定整数数组
cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦支付此费用,即可选择向上爬一个或两个台阶。 -
可以选择从下标为
0或 下标为1的台阶开始爬楼梯。 -
计算并返回到达楼梯顶部的最低花费。
思路 #
动态规划 #
- 定义状态
costs[i]为由下标为i的台阶到达楼梯顶的最小花费。
代码 #
动态规划 #
class Solution {
public int minCostClimbingStairs(int[] cost) {
int nStairs = cost.length;
int[] costs = new int[nStairs];
costs[nStairs - 1] = cost[nStairs - 1];
costs[nStairs - 2] = cost[nStairs - 2];
for (int i = nStairs - 3; i > -1; i--) {
costs[i] = cost[i] + Math.min(costs[i + 1], costs[i + 2]);
}
return Math.min(costs[0], costs[1]);
}
}