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]);
    }
}