当前位置: 首页 > news >正文

【力扣】746. 使用最小花费爬楼梯 <动态规划>

【力扣】746. 使用最小花费爬楼梯

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

请你计算并返回达到楼梯顶部的最低花费。

示例 1:
输入:cost = [10,15,20]
输出:15
解释:
你将从下标为 1 的台阶开始。
支付 15 ,向上爬两个台阶,到达楼梯顶部。
总花费为 15 。

示例 2:
输入:cost = [1,100,1,1,1,100,1,1,100,1]
输出:6
解释:你将从下标为 0 的台阶开始。
支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。
支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。
支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。
支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。
支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。
支付 1 ,向上爬一个台阶,到达楼梯顶部。
总花费为 6 。

提示:
2 <= cost.length <= 1000
0 <= cost[i] <= 999

题解

  • 确定 dp 数组以及下标的含义
    dp[i] 的定义为:到达第 i 台阶所花费的最少体力为 dp[i] 。
  • 确定递推公式
    有两个途径得到 dp[i],一个是 dp[i-1] ,一个是 dp[i-2]
    dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]
    dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]
    选最小的,状态转移方程 dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
  • dp 数组如何初始化
    选择从下标为 0 或下标为 1 的台阶开始爬楼梯,dp[0] = 0,dp[1] = 0
  • 确定遍历顺序
    从前向后遍历
  • 举例推导 dp 数组(打印 dp 数组)
class Solution {public int minCostClimbingStairs(int[] cost) {int len = cost.length;int[] dp = new int[len + 1];// 从下标为 0 或下标为 1 的台阶开始,没跳没费用dp[0] = 0;dp[1] = 0;// 遍历for (int i = 2; i <= len; i++) {dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);}return dp[len];}
}
http://www.lryc.cn/news/141288.html

相关文章:

  • sftp命令 添加端口(亲测)
  • Redis.conf详解
  • 【论文笔记】Planning and Decision-Making for Autonomous Vehicles
  • 视频云存储/安防监控EasyCVR视频汇聚平台接入GB国标设备时,无法显示通道信息该如何解决?
  • git中,add到暂存区,commit且push之后,暂存区域里还有内容吗
  • java中用SXSSFWorkbook把多个字段的list数据和单个实体dto导出到excel如何导出到多个sheet页详细实例?
  • ES基础操作
  • PCIE超高速实时运动控制卡在六面外观视觉检测上的应用
  • ctfshow web入门 php特性 web108-web112
  • 数据可视化是什么?有什么工具?
  • PC端版面设计之尾部设计
  • neo4jd3拓扑节点显示为节点标签(自定义节点显示)
  • 网络安全(黑客)了解学习路线
  • 【CSS】CSS 特性 ( CSS 优先级 | 优先级引入 | 选择器基本权重 )
  • Linux Shell 搜索命令 grep
  • 【C进阶】指针(一)
  • bug复刻,解决方案---在改变div层级关系时,导致传参失败
  • 2023年Java核心技术面试第九篇(篇篇万字精讲)
  • 解码Python JSON:从基础到高级,掌握使用的精髓
  • Qt --- 自定义工具类 持续更新... ...
  • GO语言圣经 第二章习题
  • Java 语言实现线性查找算法
  • xcode15 change
  • MySQL集群(mysql-cluster)
  • 基于神经网络的3D地质模型
  • Spring AOP教程_编程入门自学教程_菜鸟教程-免费教程分享
  • 1.linux的常用命令
  • XiaoFeng.Net 网络库使用
  • 【ES6】—数组的扩展
  • Android 实现资源国际化