从零开始的LeetCode刷题日记:746. 使用最小花费爬楼梯
一.相关链接
题目链接:746. 使用最小花费爬楼梯
二.心得体会
这道题还是动规五部曲。
1.首先是dp数组及其下标的含义,dp记录了每层楼梯对应的爬的方法,每个下标存储每个对应楼层。
2.然后是递归公式,这里的递归公式就不是简单加减了,我们需要找到到达这层楼梯的最小开销,也就是说我们要比较前一层和前两层楼梯哪个到达本层的开销更小,我们选择开销小的。所以递归公式是:
dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
3.dp数组初始化就把第0层初始化为0,第1层为0。
4.遍历顺序是从前往后。
5.具体推导出来没问题。
三.代码
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int ans[1001] = {0};ans[0] = 0;ans[1] = 0;for(int i=2;i<cost.size()+1;i++) {if(ans[i-2] + cost[i-2] > ans[i-1] + cost[i-1]) ans[i] = ans[i-1] + cost[i-1];else ans[i] = ans[i-2] + cost[i-2];}return ans[cost.size()];}
};