解题思路
1. 该问题可以分解为多个子问题(阶段)
2. 具有最优化子结构-----无后效性------有重叠子问题 ===》 用动态规划
3. 可以计算每个step的最优解(必须包含本身数值),然后比较最后一个step和上一个step的值
代码:
class Solution {
public int minCostClimbingStairs(int[] cost) {
int len = cost.length;
int[] dp = new int[len];
dp[0] = cost[0];
dp[1] = cost[1];
for(int i = 2; i < len; i++){
dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];
}
return Math.min(dp[len - 1], dp[len - 2]);
}
}
网友评论