int minCostClimbingStairs(vector<int>& cost)
{
//求有多少阶梯
int n = cost.size();
//dp用来保存到达对应层阶梯所需的花费
vector<int> dp(n);
dp[0] = cost[0];
dp[1] = cost[1];
//保存每层所需花费
for (int i = 2; i < n; i++)
{
dp[i] = cost[i] + min(dp[i-1], dp[i-2]);
}
/*
要么已经登顶dp[n-1]
要么再爬一层登顶dp[n-2]
看两者谁花费最少
*/
return min(dp[n-1], dp[n-2]);
刷题——最小花费爬楼梯
最新推荐文章于 2024-11-07 23:24:07 发布