当前位置:网站首页>LeetCode使用最小花费爬楼梯----dp问题
LeetCode使用最小花费爬楼梯----dp问题
2022-08-05 02:10:00 【零雨z】
题目:给你一个整数数组cost,其中cost[i]是从楼梯第个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬—个或者两个台阶。
你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。
示例如下:
这道题和青蛙爬楼梯差不多,可以参考下dp问题的常用思路步骤
动态规划问题三步走:
第一步骤:定义数组元素的含义
第二步骤:找出数组元素之间的关系式
第三步骤:找出初始值
用画图写的大概思路,带举例
dp[i]表示到达i的最小花费
cost[i]表示从第i个楼梯上爬需要的费用
i-1楼梯,花费cost[i-1]可以到达下标i
当2<isn时(因为一次可以选择走1阶或者2阶),可以从下标i-1使用cost[i一1]的花费达到下标i,或者从下标i-2使用costi-2]的花费达到下标i。为了使总花费最小,dp[i]应取上述两项的最小值。
举例:i等于2时,到
达2有两种办法
下标O走两阶或者下标1走一阶
dpli]表示你到第0阶或者第1阶的最小花费,因为这两个台阶是初始台阶,可以选择,所以dp[1/0]都为O,只需要考虑cost[0]和cost[1]谁大cost[0]和cost[1]都可以通过支付费用到达第二阶台阶上写的数字是设置的费用,那么就是0+2和O+1取最小得知dp2=1
同理i=3的时候可以通过第一阶徒2或者第二阶走1也就是0+1和1+3取最小值得知dp3 = 1
直到到达顶端即dp数组的终点返回dp终点即可。
代码如下:
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int[] dp = new int[n + 1];
dp[0] = dp[1] = 0;
for (int i = 2; i <= n; i++) {
dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
return dp[n];
}
}
这道题通过分析还可以发现,每个元素只和上个元素和上上个元素有关,可以思考是否符合滚动数组。
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n = cost.size();
int prev = 0, curr = 0;//初始化
for (int i = 2; i <= n; i++) {
int next = min(curr + cost[i - 1], prev + cost[i - 2]);
prev = curr;//滚动
curr = next;//滚动
}
return curr;
}
};
边栏推荐
- [Unity Entry Plan] Handling of Occlusion Problems in 2D Games & Pseudo Perspective
- 金仓数据库 KingbaseES V8 GIS数据迁移方案(3. 基于ArcGIS平台的数据迁移到KES)
- Leetcode刷题——22. 括号生成
- 学习笔记-----左偏树
- Greenplum Database Fault Analysis - Can a Soft Connection Be Made to the Database Base Folder?
- leetcode-对称二叉树
- Oracle encapsulates restful interfaces into views
- "Configuration" is a double-edged sword, it will take you to understand various configuration methods
- 使用OpenVINO实现飞桨版PGNet推理程序
- C language basics -- pointers
猜你喜欢
迅睿cms网站搬迁换了服务器后网站不能正常显示
为什么他们选择和AI恋爱?
".NET IoT from scratch" series
Three handshake and four wave in tcp
【Word】Word公式导出PDF后出现井号括号#()错误
MySQL learning
Using OpenVINO to implement the flying paddle version of the PGNet inference program
记录谷歌gn编译时碰到的一个错误“I could not find a “.gn“ file ...”
使用OpenVINO实现飞桨版PGNet推理程序
【Endnote】Word插入自定义形式的Endnote文献格式
随机推荐
超越YOLO5-Face | YOLO-FaceV2正式开源Trick+学术点拉满
Simple implementation of YOLOv7 pre-training model deployment based on OpenVINO toolkit
Dotnet 6 Why does the network request not follow the change of the system network proxy and dynamically switch the proxy?
为什么他们选择和AI恋爱?
EBS利用虚拟列及hint 提示优化sql案例一则
迅睿cms网站搬迁换了服务器后网站不能正常显示
How to simply implement the quantization and compression of the model based on the OpenVINO POT tool
在这个超连接的世界里,你的数据安全吗
SAP ERP和ORACLE ERP的区别是哪些?
Greenplum数据库故障分析——版本升级后gpstart -a为何返回失败
PHP Skills Assessment
1349. Maximum number of students taking the exam Status Compression
MySQL3
程序员失眠时的数羊列表 | 每日趣闻
CMS website construction process
Transfer Learning - Distant Domain Transfer Learning
特殊矩阵的压缩存储
Chapter 09 Use of Performance Analysis Tools [2. Index and Tuning] [MySQL Advanced]
【Endnote】Word插入自定义形式的Endnote文献格式
回顾51单片机