746.最小限のコストで階段を登る
配列の各インデックスはラダーとして使用され、i番目のラダーは負でない物理コスト値であるcost iに対応します。
はしごを登るたびに、対応する物理的なコストを費やす必要があり、その後はしごを1つまたは2つはしごを登り続けることを選択できます。
あなたは床の最上部に到達するための最小コストを見つける必要があります。最初は、インデックス0または1の要素を最初のラダーとして選択できます。
例1:
入力:コスト= [ 10、15、20 ]
出力:15
説明:最小コストは、コスト[1]から開始して、はしごの上部に到達するために2つの手順を実行します。
例2:
入力:コスト= [ 1、100、1、1、1、100、1、1、100、1 ]
出力:6
説明:最も低いコストの方法は、コスト[0]から開始し、それらの1つを1つずつ調べ、コストをスキップすることです[ 3]、それは6を要します。
注:
コストの長さは[2、1000]になります。
各コスト[i]は、範囲が[0、999]の整数型になります。
class Solution {
public int minCostClimbingStairs(int[] cost) {
if(cost.length==2) return Math.max(cost[0],cost[1]);
int[] dp=new int[cost.length+1];
dp[0]=0;dp[1]=cost[0];
for(int i=2;i<cost.length+1;i++){
dp[i]=Math.min(dp[i-1],dp[i-2])+cost[i-1];
}
return Math.min(dp[cost.length],dp[cost.length-1]);
}
}