解体思路:动态规划
首先理解题意:什么是到达楼顶,这楼顶是指数组cost最后一个元素的下一个位置
所以需要创建一个元素个数为cost.size()+1的dp数组 然后记录到达每一个位置的最小花费
下标0 和 1位置是起点 到达 i 位置的最小花费这个i需要从下标为2开始算
到达i位置的最小花费方程 dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
dp[0] 和 dp[1]默认为0 因为是0 1下标位置是起点之前没有任何叠加
最后返回结果 dp[ cost.size() ]
代码如下
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {//创建dp表//填表 填到达每个位置的最小花费//返回结果int n=cost.size();vector<int> dp (n+1);for(int i=2 ; i<=n ; i++){dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n]; }
};