使用最小花费爬楼梯
用
表示到达第
阶梯的最小花费,很明显发现这个状态只依赖前面的
。
当然还可以把空间优化到O(1)。
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n = cost.size() , M = 10000000;
cost.push_back(0);
vector<int> dp(n+1,M);
dp[0] = cost[0];
dp[1] = cost[1];
for(int i=0;i<n;i++){
if(i+2<=n) dp[i+2] = min(dp[i+2],dp[i]+cost[i+2]);
dp[i+1] = min(dp[i+1],dp[i]+cost[i+1]);
}
return dp[n];
}
};