当前位置:网站首页>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;
}
};
边栏推荐
- CMS建站流程
- SDC简介
- 一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
- 《.NET物联网从零开始》系列
- Method Overriding and Object Class
- Simple implementation of YOLOv7 pre-training model deployment based on OpenVINO toolkit
- Greenplum Database Fault Analysis - Why Does gpstart -a Return Failure After Version Upgrade?
- <开发>实用工具
- 原生js实现多选框全部选中和取消效果
- The use of pytorch: temperature prediction using neural networks
猜你喜欢
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型
刷爆朋友圈,Alibaba出品亿级并发设计速成笔记太香了
<开发>实用工具
Leetcode刷题——22. 括号生成
Opening - Open a new .NET modern application development experience
sql语句多字段多个值如何进行排序
How to simply implement the quantization and compression of the model based on the OpenVINO POT tool
使用SuperMap iDesktopX数据迁移工具迁移ArcGIS数据
汇编语言之源程序
Chapter 09 Use of Performance Analysis Tools [2. Index and Tuning] [MySQL Advanced]
随机推荐
进程在用户态和内核态的区别[独家解析]
<开发>实用工具
".NET IoT from scratch" series
《.NET物联网从零开始》系列
优化Feed流遭遇拦路虎,是谁帮百度打破了“内存墙”?
居民用水问题
浅谈数据安全治理与隐私计算
亚马逊云科技 + 英特尔 + 中科创达为行业客户构建 AIoT 平台
STM32使用stm32cubemx LL库系列教程
MySQL learning
Amazon Cloud Technology joins hands with Thundersoft to build an AIoT platform for industry customers
【Endnote】Word插入自定义形式的Endnote文献格式
金仓数据库 KingbaseES V8 GIS数据迁移方案(3. 基于ArcGIS平台的数据迁移到KES)
在这个超连接的世界里,你的数据安全吗
短域名绕过及xss相关知识
Short domain name bypass and xss related knowledge
C学生管理系统 头添加学生节点
.Net C# 控制台 使用 Win32 API 创建一个窗口
海量服务实例动态化管理
XMjs跨域问题解决