整数配列のコストが与えられます。ここで、cost[i]は階段のi番目のステップを上るコストです。この料金を支払うと、1つまたは2つのステップを上ることを選択できます。
インデックス0または1の階段から階段を上るのを選択できます。
階段の一番上に到達するための最小費用を計算して返送してください。
例1:
入力:コスト= [10,15,20]
出力:15
説明:インデックス1のステップから開始します。
- 15を支払い、階段の一番上まで2歩登ります。
総費用は15です。
コード:
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
vector<int> dp(cost.size());
dp[0]=cost[0],dp[1]=cost[1];
for(int i=2;i<dp.size();i++)
dp[i]=cost[i]+min(dp[i-2],dp[i-1]);
return min(dp[dp.size()-2],dp[dp.size()-1]);
}
};