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

最小花费爬楼梯

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

本题注意终点不是数组的最后一个位置,应该是最后一个位置的下一个位置,因此我们直接初始化的时候,就将楼梯的高度加上一,以能到达添加一个楼梯高度的最高点位终点

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        if(n<2) return 0;
        int dp1 = 0, dp2 = 0, dp3;
        for(int i = 2; i<=n; i++){
            dp3 = min(dp1 + cost[i-2], dp2 + cost[i-1]) ;
            dp1 = dp2;
            dp2 = dp3;
        }
        return dp3;
    }
};


class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        if(n<2) return 0;
        int dp1 = cost[0], dp2 = cost[1], dp3;
        for(int i = 2; i<n; i++){
            dp3 = min(dp1, dp2) + cost[i];
            dp1 = dp2;
            dp2 = dp3;
        }
      // 注意这里,最终从倒数第一个或者最后一个位置,可以跳出楼梯
        return min(dp3, dp1);
    }
};
全部评论

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务