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. 使用最小花费爬楼梯相关推荐

  1. Java实现 LeetCode 746 使用最小花费爬楼梯(递推)

    746. 使用最小花费爬楼梯 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶 ...

  2. 85. Leetcode 746. 使用最小花费爬楼梯 (动态规划-基础题)

    给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用.一旦你支付此费用,即可选择向上爬一个或者两个台阶.你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯 ...

  3. [leetcode]746. 使用最小花费爬楼梯

    动态规划: dp[i]表示爬上第i级楼梯的最小花费 class Solution {public:int minCostClimbingStairs(vector<int>& co ...

  4. Leetcode 746.使用最小花费爬楼梯

    Time: 20190904 Type: Easy 考察:动态规划 题目描述 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力 ...

  5. [leetcode] 746.使用最小花费爬楼梯

    数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始). 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶 ...

  6. leetcode 746. 使用最小花费爬楼梯(dp)

    数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯. 您需要找到达到楼层顶部的 ...

  7. 2022-3-1 Leetcode 746.使用最小花费爬楼梯

    class Solution {public:int minCostClimbingStairs(vector<int>& cost) {cost.push_back(0);//必 ...

  8. 代码随想录算法训练营第三十八天 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯。

    Leetcode 509. 斐波那契数 题目链接:509. 斐波那契数 class Solution {public:int fib(int n) {if(n <= 1)return n;int ...

  9. LeetCode Algorithm 746. 使用最小花费爬楼梯

    746. 使用最小花费爬楼梯 Ideas 首先确定题目类型,爬楼梯问题,并且给定了状态转移的限制,其实就已经可以确定状态转移方程了. 然后题目说可以从下标为0或下标为1的台阶开始爬,所以我们可以定义两 ...

最新文章

  1. C++动态数组再总结
  2. Android: how to resolve Application’s parameter NullPointerException
  3. rust设置里面那个是能见度_IDEA maven设置里面的Repositories这个设置问题
  4. IDEA连接数据库自动生成实体类
  5. 利用ES6里标准化的JavaScript proxy对象拦截SAP C4C页面的HTML div原生操作
  6. 中望cad插件_中望软件与狄诺尼达成战略合作,打造交通行业全国产CAD解决方案...
  7. go ip过滤_用Go实现自己的爬虫
  8. 基于spiking卷积的脉冲时间编码
  9. SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
  10. POJ 1703 Find them, Catch them 并查集
  11. gdc服务器维修员登录密码,gdc服务器密码
  12. java 无驱动socket连接热敏小票打印机示例,编写自定义模板 芯烨/xprinter,附工具类即开即用
  13. struts2与struts1区别二
  14. KOOCAN非正常电影排行榜之这个丧尸不太冷
  15. linux设备模型--sysfs
  16. python pandas合并单元格_python pandas拆分单元格
  17. python通信达数据_Python读取通达信数据
  18. java data jpa_java中Spring data jpa通过Predicate查询时间段
  19. 图书借阅管理系统实现
  20. JavaScript定时器-限时秒杀

热门文章

  1. 立冬了 广州还是夏天
  2. 面试精讲之面试考点及大厂真题 - 分布式专栏 06 详细说下CAP分别代表什么含义吗
  3. Nodejs 分布式事务
  4. CentOS系统Tomcat 8.5/9部署SSL证书
  5. 使用PostgREST的配置教程
  6. Spring ActiveMQ教程
  7. 简说设计模式——策略模式
  8. 【Python】圆周率的计算
  9. 面向对象设计原则之4-依赖倒置原则
  10. web表单设计:点石成金_如何设计安全的Web表单:验证,清理和控制