题解 | #最小花费爬楼梯#
最小花费爬楼梯
https://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7
方法:动态规划
根据题设:一旦你支付此费用,即可选择向上爬一个或者两个台阶。可以将问题分解为:最后选择爬一个台阶和两个台阶这两种方案的较小值即为最小花费。
时间复杂度:o(n)。
空间复杂度:o(n)。
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
//需要爬上台阶,所以大小是数组大小加1
int n = cost.size() + 1;
//记录爬到对应台阶最少的花费
vector<int> res(n, 0);
for (int i = 2; i <= n; i++) {
//选取花费最小的方案
res[i] = min(res[i - 1] + cost[i - 1], res[i - 2] + cost[i - 2]);
}
return res[n - 1];
}
};
刷题题解(c++) 文章被收录于专栏
算法题题解(c++)
