數組的每個索引作為一個階梯,第 i個階梯對應著一個非負數的體力花費值 costi。
每當你爬上一個階梯你都要花費對應的體力花費值,然后你可以選擇繼續爬一個階梯或者爬兩個階梯。
您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
示例 1:
輸入: cost = [10, 15, 20]
輸出: 15
解釋: 最低花費是從cost[1]開始,然后走兩步即可到階梯頂,一共花費15。
代碼
class Solution {public int minCostClimbingStairs(int[] cost) {int n=cost.length;int[] dp=new int[n];dp[0]=cost[0];dp[1]=cost[1];for(int i=2;i<n;i++)//每一步由前兩個階梯中的花費體力值小的那個轉移而來dp[i]=Math.min(dp[i-1],dp[i-2])+cost[i];return Math.min(dp[n-1],dp[n-2]);}
}