题目描述
解题思路
1.首先要弄清楚,这个站在楼梯上是没有花费的,只有从楼梯上跳到下一阶楼梯才会有花费
2.最后要到达的位置,是最后一个需要收费的楼梯的上面一阶
3.注意一次只能跳一阶或两阶(这里可以参考一下 力扣70的爬楼梯问题)
4.dp[i]的含义是跳到这一阶所需要的最小花费,dp[i] = min((dp[i-1] + cost[i-1]) ,(dp[i-2] + cost[i-2]));
代码
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int m_size = cost.size();
int dp[m_size+1];
dp[0] = 0,dp[1] = 0;
for(int i = 2; i <= m_size; i++){
dp[i] = min((dp[i-1] + cost[i-1]) ,(dp[i-2] + cost[i-2]));
}
return dp[m_size];
}
};