Time: 20190904
Type: Easy
考察:动态规划

题目描述

数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。

每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。

您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

f[i]表示到i台阶耗费的体力值最小值,那么如何到达的i台阶呢,可以是从前一级过来,也可以是从前两级过来。

f[i] = min(f[i-1], f[i-2]) + cost[i]

注意在最后取值时,去f的最后两个值的较小值,因为问的是到达i,可以是前者过来,恰好在上面,也可以绕过去,因此第i级太极的花费可计入也可不计入,取二者的最小值。

代码

class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:# 含有最小,最大,则可以推导出是用DP算法# f[i] = min(f[i-1], f[i-2]) + cost[i]n = len(cost)if n == 0:return 0if n == 1:return cost[0]for i in range(2, n):cost[i] = min(cost[i-1], cost[i-2]) + cost[i]    print(cost)    return min(cost[-1], cost[-2])

END.

Leetcode 746.使用最小花费爬楼梯相关推荐

  1. leetcode - 746. 使用最小花费爬楼梯

    746. 使用最小花费爬楼梯 -------------------------------------- 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i] (索引 ...

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

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

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

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

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

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

  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. 手把手教你EMD算法原理与Python实现(更新)
  2. android判断是否被点击方法,[Android]父View如何知道子View被点击了
  3. LeetCode—213. 打家劫舍 II
  4. nssl1216-码灵鼠【数学】
  5. 深入研究socket编程(3)——使用select函数编写客户端和服务器
  6. ROBEL:谷歌推出低成本机器人训练平台
  7. Matlab报错警告: 启动 Connector 时出现问题及解决方案
  8. Java面试题:程序计数器为什么是私有的?
  9. 批处理向FTP上传指定属性的文件 批处理增量备份的例子
  10. Gartner数据:RPA以75.6%增长率成2019年Q1增速最快的企业级软件(附全球十大RPA市场数据)
  11. 微信小程序下载视频保存到本地
  12. SharePoint 2019 部署(二)搜索
  13. matlab 二值图像连通区域标记法,一种二值图像连通区域标记的简单快速算法_葛春平...
  14. qt 批量裁剪图片_照片变素描,不用下载App,好用的在线图片处理及图库
  15. uniapp启动微信小程序报错---initialize
  16. c#拼图碎片形状_将碎片拼成完整的拼图
  17. E2GameboyAX正式版
  18. 我的世界服务器皮肤显示不出来,我的世界怎么让皮肤显示,怎么没有皮肤显示不出来怎么办啊...
  19. Python都能干什么
  20. 除了we tool还有哪些免费安全好用的微信群发软件?这两个软件比we tool好用!

热门文章

  1. Labview子VI的创建与调用
  2. 文件操作之fread()和fwrite()函数
  3. linux pwm测试程序,DM8168 PWM驱动与测试程序
  4. easypanel安装php5.4,kangle一键脚本-凌梦云
  5. mysql job status_检查SQL Server Job状态
  6. jmeter安装 java,Windows下安装jmeter图文教程
  7. 增城seo搜索引擎优化_搜索引擎seo优化主要从哪里入手?
  8. Android WebView示例教程
  9. iOS UISlider
  10. kotlin运行_Kotlin允许,运行,也适用于