题解 | #最小花费爬楼梯#

最小花费爬楼梯

https://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7

方法:动态规划

根据题设:一旦你支付此费用,即可选择向上爬一个或者两个台阶。可以将问题分解为:最后选择爬一个台阶和两个台阶这两种方案的较小值即为最小花费。

时间复杂度:o(n)。

空间复杂度:o(n)。

class Solution {
  public:
    int minCostClimbingStairs(vector<int>& cost) {
	  	//需要爬上台阶,所以大小是数组大小加1
        int n = cost.size() + 1;
        //记录爬到对应台阶最少的花费
        vector<int> res(n, 0);

        for (int i = 2; i <= n; i++) {
		  	//选取花费最小的方案
            res[i] = min(res[i - 1] + cost[i - 1], res[i - 2] + cost[i - 2]);
        }
        return res[n - 1];
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务