LeetCode 746. 使用最小花费爬楼梯 (最简单的入门DP)

使用最小花费爬楼梯
d p [ i ] dp[i] 表示到达第 i i 阶梯的最小花费,很明显发现这个状态只依赖前面的 d p [ i 2 ] d p [ i 1 ] dp[i-2]、dp[i-1]
当然还可以把空间优化到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];
    }
};

猜你喜欢

转载自blog.csdn.net/qq_44846324/article/details/107474302