这个题一开始理解的有点问题,开辟的数组大小是length,所以写了几次没有写出来。以为到数组的最后一个元素就可以了,其实是最后一个元素也要通过,所以应该开辟的数组大小应该是length+1;
简单的写一下转化方程 dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
这个方程是计算要到达第i层需要花费的代价
class Solution {
public:
/**
* @param cost: an array
* @return: minimum cost to reach the top of the floor
*/
int minCostClimbingStairs(vector<int> &cost) {
// Write your code here
int length=cost.size();
int *dp=new int[length+1];
dp[0]=0;
dp[1]=0;
for(int i=2;i<=length;i++)
{
dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
}
return dp[length];
}
};