class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
if(cost.size() == 1) return 0; // 前两种,特殊考虑
if(cost.size() == 2) return min(cost[0], cost[1]);
vector<int> DP(cost.size());
for(int ii = 0; ii < cost.size(); ii++) {
if(ii <= 1) DP[ii] = cost[ii]; // 前两个,直接等于
else DP[ii] = min(DP[ii-1], DP[ii-2]) + cost[ii]; // 后面的,在之前的基础上走一步或者两步
}
return min(DP[cost.size()-1], DP[cost.size()-2]); // 最后走一步或者走两步都可以到终点
}
};
【leetcode 动态规划 C++】746. Min Cost Climbing Stairs
最新推荐文章于 2024-09-02 20:21:30 发布