Min Cost Climbing Stairs
一道基础的dp题, dp[i]的意义是表示在ith位置上, 最小的cost. 那么 dp[i] = Math.min(dp[i-2], dp[i-1]) + cost[i]
表示选择前一步或者前两步中最小的cost, 然后走当前这一步. 最后的答案是选择Math.min(dp[cost.length – 1], dp[cost.length – 2]), 因为从cost.length -1和cost.length-2都可以达到终点.
class Solution {
public int minCostClimbingStairs(int[] cost) {
int[] dp = new int[cost.length];
dp[0] = cost[0];
dp[1] = cost[1];
for(int i = 2 ; i < cost.length; i++) {
dp[i] = Math.min(dp[i-2], dp[i-1]) + cost[i];
}
return Math.min(dp[cost.length - 1], dp[cost.length - 2]);
}
}