[leetcode]746. 使用最小花费爬楼梯

在这里插入图片描述
在这里插入图片描述

动态规划:

dp[i]表示爬上第i级楼梯的最小花费

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        cost.push_back(0); //后面加个0,将阶梯顶视为第n层(没加0前的第n层,加0后的第n-1层)
        int n = cost.size();
        vector<int>dp(n, 0);
        dp[0] = cost[0];
        dp[1] = cost[1];
        for(int i = 2; i < n; i++)
        {
            dp[i] = min(dp[i-1], dp[i-2]) + cost[i];
        } 
        return dp[n-1]; //cost原来的第n层
    }
};

在这里插入图片描述

或者

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        vector<int>dp(n, 0);
        dp[0] = cost[0];
        dp[1] = cost[1];
        for(int i = 2; i < n; i++)
        {
            dp[i] = min(dp[i-1], dp[i-2]) + cost[i];
        } 
        return min(dp[n-1], dp[n-2]); 
    }
};
发布了179 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40691051/article/details/104415094