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

代码随想录day38

动态规划五部曲

  1. 确定dp数组以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

509. 斐波那契数

https://leetcode.cn/problems/fibonacci-number/

class Solution {public int fib(int n) {if(n==0) return 0;if(n<3) return 1;int[] dp = new int[n];dp[0]=1;dp[1]=1;for(int i=2;i<n;i++){dp[i]=dp[i-1]+dp[i-2];}return dp[n-1];}
}

讲解的简化版本。

class Solution {public int fib(int n) {if (n < 2) return n;int a = 0, b = 1, c = 0;for (int i = 1; i < n; i++) {c = a + b;a = b;b = c;}return c;}
}

70. 爬楼梯

https://leetcode.cn/problems/climbing-stairs/
和斐波那契差不多。

class Solution {public int climbStairs(int n) {if(n<4) return n;int[] dp=new int[n];int a=2;int b=3;int c=5;for(int i=3;i<n;i++){c=a+b;a=b;b=c;}return c;}
}

746. 使用最小花费爬楼梯

https://leetcode.cn/problems/min-cost-climbing-stairs/
这个感觉最后一步不花费更好理解

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]=Math.min(dp[i - 1], dp[i - 2]) + cost[i];}return Math.min(dp[cost.length-1],dp[cost.length-2]);}
}
http://www.lryc.cn/news/16958.html

相关文章:

  • 《计算机网络:自顶向下方法》实验5:TCP
  • 【踩坑指南】Stable Diffusion 服务器端部署笔记
  • [qiankun]-多页签缓存
  • 2|电子技术|数字电子技术基础|雨课堂习题|考前回顾
  • vue+echarts:圆形柱状图设置角度和最大值
  • Linux系统安装Nginx常见报错问题
  • 按下按键之后,打印一句话------>三个按键需要实现
  • Mac配置VScode
  • MAC地址IP地址 端口
  • 关于虚拟数字人你想知道的都在这里
  • 分布式任务调度处理方案(无代码)
  • 2023年博管办香江学者计划、澳门青年学者开始申报
  • (二十一)、实现评论功能(1)【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】
  • 【Docker】初识Dcoker以及镜像操作(一)
  • (1)C#传智:在vs2022中基本了解(第一天)
  • 【数据结构与算法】算法的时间复杂度和空间复杂度
  • 不使用contab -e的方式,添加计划任务
  • sentry2摄像头之blink篇
  • springboot集成PDF导出
  • Podman 创建持久 MySQL 数据库容器
  • Java-反射
  • 构造agent类型的内存马(内存马系列篇十三)
  • JavaEE简单示例——<select>中的查询参数传递和结果集封装自动映射关系
  • 信息安全圈都在谈论CISP,CISSP,这两者有什么区别呢?
  • 浅谈Redisson实现分布式锁的原理
  • UVM实战(张强)-- UVM中的寄存器模型
  • 什么是 CSAT?这份客户满意度流程指南请查收
  • AD域备份和恢复工具
  • 老学长的浙大MPA现场复试经验分享
  • 制作证书链并进行验证