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

Day37 || 509. 斐波那契数 、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划五步:(来自“代码随想录”)
  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

509. 斐波那契数

题目链接: 力扣题目链接
思路:当前dp就是每个n的对于n-1、n-2的值;递推就是 dp[i] = dp[i-1]+dp[i-2];初始化0和1即可,顺序就是哦从前向后即可。

70. 爬楼梯

题目链接: 力扣题目链接
思路:初始化dp[1] = 1,dp[2] = 2; 递推就是 dp[i] = dp[i-1]+dp[i-2];和斐波那契数列一样。

746. 使用最小花费爬楼梯

题目链接: 力扣题目链接
思路:当前dp每个值是到当前位置最小的花费;递推就是  dp[i]=cost[i]+Math.min(dp[i-1],dp[i-2]);初始化0和1即可,最后返回值是计算n和n-1的最小值,毕竟可以跳两步,所以倒数第二个台阶也是返回值的一部分。(这个是到达位置就会花费)
//到达就会花费
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length] ;
        dp[0]=cost[0];
        dp[1]=cost[1];
        for(int i=2;i<cost.length;i++){
            dp[i]=cost[i]+Math.min(dp[i-1],dp[i-2]);
        }
        return Math.min(dp[cost.length-1],dp[cost.length-2]);
    }
}
//跳跃才会花费
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length+1] ;
        dp[0]=0;
        dp[1]=0;
        for(int i=2;i<=cost.length;i++){
            dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }
        return dp[cost.length];
    }
}

以上两个都可以实现目标。

时间:1.5h


http://www.kler.cn/news/358697.html

相关文章:

  • 15分钟学Go 第9天:函数的定义与调用
  • C语言 | Leetcode C语言题解之第486题预测赢家
  • 用OpenCV写一个简单的尺寸检测程序
  • python+ffmpeg 屏幕录制程序
  • 多系统萎缩患者必看!这些维生素是你的“生命守护者”✨
  • 美国Honeywell霍尼韦尔气体检测仪SPXCDALMCX说明书
  • XML Schema 复合空元素
  • 若依前后端框架学习——新建模块(图文详解)
  • 深度学习相关知识点
  • 029 elasticsearch文档管理(ElasticsearchRepository、ElasticsearchRestTemplate)
  • VScode远程服务器之远程 远程容器 进行开发(五)
  • 第二代GPT-SoVITS V2:让声音克隆变得简单
  • Spark广播变量(类似小表广播)
  • 关于django这个python服务器的并发能力?
  • Java EE规范
  • 白炽灯和节能灯哪个更护眼?央视公认最好的护眼灯分享
  • Vue.js组件开发:深入理解与代码实现
  • 安装nginx实现多ip访问多网站
  • Vue中watch侦听器(监视器)
  • C语言 | Leetcode C语言题解之第496题下一个更大元素I