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

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

509. 斐波那契数

动态规划五部曲:

  1. 确定dp数组以及下标含义
  • 第i个数的斐波那契数列是dp[i]
  1. 确定递推公式
  • 状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];
  1. dp数组如何初始化
  • dp[0] = 0; dp[1] = 1;
  1. 确定遍历顺序
  • dp[i]是依赖 dp[i - 1] 和 dp[i - 2]→遍历的顺序一定是从前到后遍历的
  1. 举例推导dp数组
public class Solution {public int Fib(int n) {if(n<2) return n;// 用长度为2的数组保存前两个结果,节省空间int[] dp=new int[2]{0,1};// 从 2 开始迭代直到 nfor(int i=2;i<=n;i++){// 滚动数组:前一项变成现在的后一项int temp=dp[0]+dp[1];dp[0]=dp[1];dp[1]=temp;}// 返回第 n 项(最终保存在 dp[1] 中)return dp[1];}
}

70. 爬楼梯(写法与上题相同)

动态规划五部曲:

  1. 确定dp数组以及下标含义
  • 达到i阶有dp[i]种方法
  1. 确定递推公式
  • 状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];
  1. dp数组如何初始化
  • dp[1] = 1; dp[2] = 2;
  1. 确定遍历顺序
  • dp[i]是依赖 dp[i - 1] 和 dp[i - 2]→遍历的顺序一定是从前到后遍历的
  1. 举例推导dp数组
public class Solution {public int ClimbStairs(int n) {if(n<=2) return n;int[] dp=new int[2]{1,2};for(int i=3;i<=n;i++){int temp=dp[0]+dp[1];dp[0]=dp[1];dp[1]=temp;}return dp[1];}
}

746. 使用最小花费爬楼梯

可以选择爬 1 或 2 个台阶,可以从下标 01 开始爬

动态规划五部曲:

  1. 确定dp数组以及下标含义
  • 到达第i台阶所花费的最少体力为dp[i]。
  1. 确定递推公式
  • 状态转移方程

  • dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]

  1. dp数组如何初始化
  • dp[0] = 0; / dp[1] = 0;
  1. 确定遍历顺序
  • dp[i]是依赖 dp[i - 1] 和 dp[i - 2]→从前到后遍历cost数组
  1. 举例推导dp数组
public class Solution {public int MinCostClimbingStairs(int[] cost) {int[] dp=new int[2]{0,0};for(int i=2;i<=cost.Length;i++){int temp=Math.Min((dp[1]+cost[i-1]),(dp[0]+cost[i-2]));dp[0]=dp[1];dp[1]=temp;}return dp[1];}
}

 

 

http://www.dtcms.com/a/300070.html

相关文章:

  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-31,(知识点:芯片容量,行地址,列地址,Bank地址,数据位宽,数据带宽)
  • SpringMVC——请求
  • 2025年全国青少年信息素养大赛Scratch算法创意实践挑战赛 小低组 初赛 真题
  • 深分页性能问题分析与优化实践
  • matplotlib库 点线图,直方图,多子图与三维空间的可视化
  • C++11语法
  • 计算机中的数据表示
  • C++ TAP(基于任务的异步编程模式)
  • 停止所有docker容器的命令
  • 【SSM】第二章 网上蛋糕项目商城-首页
  • 进程线程协程深度对比分析
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 71(题目+回答)
  • HarmonyOS应用上架流程详解
  • element-plus安装以及使用
  • STM32概况
  • Matlab自学笔记六十五:解方程的数值解法(代码速成)
  • 如何查看电脑后门IP和流量?
  • ECSPI控制器
  • 【Spring AI】SiliconFlow-硅基流动
  • 如何使用Anaconda(miniconda)和Pycharm
  • 宝塔面板如何升级OpenSSL
  • LED滚动字幕投射器:免费好用的字幕工具
  • [硬件电路-91]:模拟器件 - 半导体与常规导体不一样,其电阻式动态变化的,浅谈静态电阻与动态电阻
  • 倍思鹿数值仿真-实现设备型号库的可编辑、便捷导入项目
  • python I 本地 html 文件读取方法及编码报错问题详解
  • 【坐车n次最少钱】2022-8-31
  • Python项目结构与打包工具实践
  • java测试题(下)
  • 创意竖状滚动轮播图
  • 嵌入式硬件篇---zigbee无线串口通信问题