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

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.xdnf.cn/news/16275.html

相关文章:

  • 复杂产品系统集成协同研发平台的研究与实现
  • 【MySQL】MySQL 缓存方案
  • haproxy原理及实战部署
  • Vue3组件通信方法清单
  • CPU 为什么需要缓存?揭开速度与效率的底层逻辑
  • ICMPv6报文类型详解表
  • 如何检查服务器数据盘是否挂载成功?
  • 【Spring AI】大模型服务平台-阿里云百炼
  • 创建 Vue 项目的 4 种主流方式
  • Spark-TTS 使用
  • Caffeine 缓存库的常用功能使用介绍
  • 秋招Day19 - 分布式 - 分布式设计
  • Qt 网络编程进阶:RESTful API 调用
  • setsockopt函数概念和使用案例
  • 以实时语音转文字项目为例,介绍一下如何手动部署python应用到Linux服务器(附脚本)
  • C++:STL中vector的使用和模拟实现
  • 【机器学习-1】特征工程与KNN分类算法
  • CPU(中央处理器)和GPU(图形处理器)的区别
  • 如何理解泊松分布
  • adb 下载并安装
  • 第七章 愿景11 琦琦复盘测试
  • 线段树学习笔记 - 练习题(3)
  • Effective C++ 条款02:尽量以 const, enum, inline 替换 #define
  • 【PyTorch】图像多分类项目部署
  • epoll_event数据结构及使用案例详解
  • 解密负载均衡:如何轻松提升业务性能
  • Qt:qRegisterMetaType函数使用介绍
  • iOS —— 天气预报仿写总结
  • 【日志】unity俄罗斯方块——边界限制检测
  • Zookeeper学习专栏(十):核心流程剖析之服务启动、请求处理与选举协议