題名
配列の各インデックスはラダーとして機能し、i番目のラダーは非負の物理的労力コストiに対応します。
はしごを登るたびに、対応する物理的なコスト値を費やす必要があります。その後、1つのはしごを登り続けるか、2つのはしごを登り続けるかを選択できます。
あなたは床の最上部に到達するために最低のコストを見つける必要があります。最初に、インデックス0または1の要素を初期ラダーとして選択できます。
例1:
入力:コスト= [ 10、15、20 ]
出力:15
説明:最小コストは、コスト[1]から開始し、2つのステップを実行して、はしごの最上部に到達します。合計コストは15です。
例2:
入力:コスト= [ 1、100、1、1、1、100、1、1、100、1 ]
出力:6
説明:最低コストの方法は、コスト[0]から開始し、1を1つずつ実行することです。 、スキップコスト[3]、合計6のコスト。
注意:
コストの長さは[2、1000]になります。
各cost [i]は、範囲が[0、999]の整数型になります。
問題解決のアイデア
この質問は比較的単純です。コードを直接見てください。
コードデモ
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-1],dp[i-2])+cost[i];
}
return Math.min(dp[cost.length-1],dp[cost.length-2]);
}
}
効果
情報の
回答は成功しました:
実行時間:1ミリ秒、Javaユーザーの99.68%を打ち負かしました
メモリ消費量:38.2 MB、Javaユーザーの67.94%を打ち負かしました