🔥博客主页: A_SHOWY
🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_
1.题目链接
746. 使用最小花费爬楼梯https://leetcode.cn/problems/min-cost-climbing-stairs/
2.题目详情
今天的每日一题又是一道easy题目,是一道简单dp题目,思路比较简单,难点在于语文理解题意。
3.题目分析解答
,
这道题目的题目描述不是很好,可以按照以下理解,在首和尾部都加一个0,分别代表地面和楼顶,数组的每一个数字代表从当前楼梯迈出所需要的体力,从地面开始,第一步可以选择第0阶或第一,都不消耗体力,最终要求到达一个0(楼顶)消耗的体力最少。 再看上图,这个题目就很好理解了。经典的简单动态规划
有几个需要注意的点:定义dp长度为n+1,因为终点也算一阶楼梯,所以dp数组应该是length+1个元素长,最后返回length位置的值。
4.整体完整代码:
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
//动态规划,设置dp为到达下标i的最小花费
int n = cost.size();
vector<int> dp(n+1);//终点也算一阶楼梯,所以dp数组应该是length+1个元素长,最后返回length位置的值
dp[0] = dp[1] = 0;
for(int i =2 ;i <=n;i++)
{
dp[i] = min(dp[i-1] + cost[i-1],dp[i-2] + cost[i-2]);
}
return dp[n];
}
};
5.打卡记录
(16号丢了一天,太忙了最近补上)