leetcode - 746. 使用最小花费爬楼梯
746. 使用最小花费爬楼梯
——————————————————————————————————————
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i] (索引从0开始)。
每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。
您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。
示例 1:
输入: cost = [10, 15, 20]
输出: 15
解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。
示例 2:
输入: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
输出: 6
解释: 最低花费方式是从cost[0]开始,逐个经过那些1,跳过cost[3],一共花费6。
注意:
cost 的长度将会在 [2, 1000]。
每一个 cost[i] 将会是一个Integer类型,范围为 [0, 999]。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs
——————————————————————————————————————
1、动态规划
要选择到达最顶层n的最低花费,则知道n-1或者n-2的最低花费就可以知道了。对于到达的每一层阶梯,其最小花费得到其上面两层阶梯的最低花费的最小值。于是我们可以从最开始开始迭代,计算第三个阶梯对于前两个阶梯的最小值,然后计算第四个,一直循环下去,并保存每个阶梯的需要花费的最小值,这样得到的一个数组的最后一个数就是最顶层的最低花费。具体的C++代码如下:
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int length = cost.size(); #计算cost的长度vector<int> num; #建立一个容量num.push_back(0); #将第一个阶梯的花费设定为0num.push_back(0); #将第二个阶梯的花费设定为0for(int i=2;i<=length;i++){num.push_back(min(num[i-1]+cost[i-1],num[i-2]+cost[i-2])); #不断循环,计算第三个阶梯之后每个阶梯的最小花费}return num[length]; #返回最顶层的最小花费}
};
leetcode - 746. 使用最小花费爬楼梯相关推荐
- Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
746. 使用最小花费爬楼梯 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶 ...
- 85. Leetcode 746. 使用最小花费爬楼梯 (动态规划-基础题)
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用.一旦你支付此费用,即可选择向上爬一个或者两个台阶.你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯 ...
- [leetcode]746. 使用最小花费爬楼梯
动态规划: dp[i]表示爬上第i级楼梯的最小花费 class Solution {public:int minCostClimbingStairs(vector<int>& co ...
- Leetcode 746.使用最小花费爬楼梯
Time: 20190904 Type: Easy 考察:动态规划 题目描述 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力 ...
- [leetcode] 746.使用最小花费爬楼梯
数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始). 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶 ...
- leetcode 746. 使用最小花费爬楼梯(dp)
数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯. 您需要找到达到楼层顶部的 ...
- 2022-3-1 Leetcode 746.使用最小花费爬楼梯
class Solution {public:int minCostClimbingStairs(vector<int>& cost) {cost.push_back(0);//必 ...
- 代码随想录算法训练营第三十八天 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯。
Leetcode 509. 斐波那契数 题目链接:509. 斐波那契数 class Solution {public:int fib(int n) {if(n <= 1)return n;int ...
- LeetCode Algorithm 746. 使用最小花费爬楼梯
746. 使用最小花费爬楼梯 Ideas 首先确定题目类型,爬楼梯问题,并且给定了状态转移的限制,其实就已经可以确定状态转移方程了. 然后题目说可以从下标为0或下标为1的台阶开始爬,所以我们可以定义两 ...
最新文章
- C++动态数组再总结
- Android: how to resolve Application’s parameter NullPointerException
- rust设置里面那个是能见度_IDEA maven设置里面的Repositories这个设置问题
- IDEA连接数据库自动生成实体类
- 利用ES6里标准化的JavaScript proxy对象拦截SAP C4C页面的HTML div原生操作
- 中望cad插件_中望软件与狄诺尼达成战略合作,打造交通行业全国产CAD解决方案...
- go ip过滤_用Go实现自己的爬虫
- 基于spiking卷积的脉冲时间编码
- SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
- POJ 1703 Find them, Catch them 并查集
- gdc服务器维修员登录密码,gdc服务器密码
- java 无驱动socket连接热敏小票打印机示例,编写自定义模板 芯烨/xprinter,附工具类即开即用
- struts2与struts1区别二
- KOOCAN非正常电影排行榜之这个丧尸不太冷
- linux设备模型--sysfs
- python pandas合并单元格_python pandas拆分单元格
- python通信达数据_Python读取通达信数据
- java data jpa_java中Spring data jpa通过Predicate查询时间段
- 图书借阅管理系统实现
- JavaScript定时器-限时秒杀