1、思路
-
爬上第
i
级台阶所需的成本,只能从爬上第i - 1
级台阶和第i - 2
级台阶的成本转移而来; -
最后一步跨到楼梯顶部时,可以从倒数第一级与倒数第二级台阶跨上去;
-
题目给出数组长度大于等于2,所以不用判空了。
2、代码
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
for (int i = 2; i < cost.size(); ++ i)
{
cost[i] += min(cost[i - 1], cost[i - 2]); //累加前两级台阶的最小值
}
return min(cost[cost.size() - 1], cost[cost.size() - 2]); //倒数第一二级台阶
}
};