当前位置:网站首页>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;
}
};边栏推荐
- 重新审视分布式系统:永远不会有完美的一致性方案……
- MySQL3
- 亚马逊云科技 + 英特尔 + 中科创达为行业客户构建 AIoT 平台
- “配置”是把双刃剑,带你了解各种配置方法
- [Redis] Redis installation under Linux
- STM32使用stm32cubemx LL库系列教程
- J9数字货币论:web3的创作者经济是什么?
- How to create an rpm package
- Using OpenVINO to implement the flying paddle version of the PGNet inference program
- [How to smash wool according to the music the couple listens to during the Qixi Festival] Does the background music affect the couple's choice of wine?
猜你喜欢

如何基于OpenVINO POT工具简单实现对模型的量化压缩

"Dilili, wait for the lights, wait for the lights", the prompt sound for safe production in the factory

线性表的查找

【MySQL series】- Does LIKE query start with % will make the index invalid?

【Unity入门计划】2D游戏中遮挡问题的处理方法&伪透视

Jincang database KingbaseES V8 GIS data migration solution (3. Data migration based on ArcGIS platform to KES)

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型

2022了你还不会『低代码』?数据科学也能玩转Low-Code啦!

1349. Maximum number of students taking the exam Status Compression

超越YOLO5-Face | YOLO-FaceV2正式开源Trick+学术点拉满
随机推荐
MySQL learning
EBS利用虚拟列及hint 提示优化sql案例一则
使用SuperMap iDesktopX数据迁移工具迁移地图文档和符号
【Endnote】Word插入自定义形式的Endnote文献格式
MySQL学习
[Word] #() error occurs after Word formula is exported to PDF
Greenplum数据库故障分析——能对数据库base文件夹进行软连接嘛?
居民用水问题
.Net C# 控制台 使用 Win32 API 创建一个窗口
".NET IoT from scratch" series
Fragment visibility judgment
the mechanism of ideology
使用SuperMap iDesktopX数据迁移工具迁移ArcGIS数据
Pisanix v0.2.0 发布|新增动态读写分离支持
蚁剑高级模块开发
迅睿cms网站搬迁换了服务器后网站不能正常显示
MySQL3
The use of pytorch: temperature prediction using neural networks
Chapter 09 Use of Performance Analysis Tools [2. Index and Tuning] [MySQL Advanced]
直播回放含 PPT 下载|基于 Flink & DeepRec 构建 Online Deep Learning