题目描述:
给你一个整数数组 cost
,其中 cost[i]
是从楼梯第 i
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0
或下标为 1
的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
题解:
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n=cost.size();
vector<int> sum(n+1);
sum[0]=0;
sum[1]=0;
for(int i=2;i<=n;i++){
sum[i]=min(sum[i-1]+cost[i-1],sum[i-2]+cost[i-2]);
}
return sum[n];
}
};
解题思路:
到达每层楼梯都有两种花费情况:从低一层上来加上低一层的花费;从低两层上来加上低两层的花费。取两者较小者即为最少花费。考虑第0层和第1层花费均为0。