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

算法奇妙屋(八)-泰波那契数列模型

⚙️个人专栏:

《Java算法时空: 图解手撕原理》 《多线程》 《JavaSE基础原理》 《数据结构》

与其内耗自己,不如责备他人

目录

一. 力扣 1137. 第 N 个泰波那契数

1. 题目

2. 算法原理

(1) 动态规划常见步骤

(2) 空间优化

3. 代码

(1) 未优化的常规代码

(2) 空间优化后的代码

二. 力扣 面试题 08.01. 三步问题

1. 题目

2. 算法原理

(1) 为什么说和泰波那契数列相似呢?

(2) 动态规划过程

3. 代码

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

1. 题目

2. 算法原理

(1) 解法一:dp表以i为结尾

(2) 解法二:dp表以i位置为起点

3. 代码

(1) 解法一代码:

(2) 解法二代码:


一. 力扣 1137. 第 N 个泰波那契数

1. 题目

2. 算法原理

(1) 动态规划常见步骤

这里我们用的是动态规划思想, 具体请看图解

(2) 空间优化

3. 代码

(1) 未优化的常规代码

    public int tribonacci(int n) {if (n == 0) {return 0;}if (n == 1 || n == 2) {return 1;}int[] dp = new int[n + 1];dp[0] = 0;dp[1] = dp[2] = 1;for (int i = 3; i < dp.length; i++) {dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1];}return dp[n];}

(2) 空间优化后的代码

    public int tribonacci(int n) {if (n == 0) {return 0;}if (n == 1 || n == 2) {return 1;}int a = 0;int b = 1, c = 1;int ret = 0;for (int i = 3; i <= n; i++) {ret = (a + b + c);a = b;b = c;c = ret;}return ret;}

二. 力扣 面试题 08.01. 三步问题

1. 题目

题目很好理解, 即求上到n个台阶的总走法, 可以看出与泰波那契数列有点像

2. 算法原理

(1) 为什么说和泰波那契数列相似呢?

(2) 动态规划过程

3. 代码

    public int waysToStep(int n) {if (n == 1 || n == 2) {return n;}if (n == 3) {return 4;}int MOD = (int) 1e9 + 7;int[] dp = new int[n + 1];dp[1] = 1;dp[2] = 2;dp[3] = 4;for (int i = 4; i <= n; i++) {dp[i] = ((dp[i - 1] + dp[i - 2]) % MOD + dp[i - 3]) % MOD;}return dp[n];}

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

1. 题目

1.

2.

2. 算法原理

(1) 解法一:dp表以i为结尾

(2) 解法二:dp表以i位置为起点

3. 代码

(1) 解法一代码:

    public int minCostClimbingStairs(int[] cost) {int n = cost.length;int[] dp = new int[n + 1];for (int i = 2; i <= n; i++) {dp[i] = Math.min(dp[i - 1] + cost[i - 1],dp[i - 2] + cost[i - 2]);}return dp[n];}

(2) 解法二代码:

    public int minCostClimbingStairs(int[] cost) {int n = cost.length;int[] dp = new int[n];dp[n - 1] = cost[n - 1];dp[n - 2] = cost[n - 2];for (int i = n - 3; i >= 0; i--) {dp[i] = cost[i] + Math.min(dp[i + 1], dp[i + 2]);}return Math.min(dp[0],dp[1]);}

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

相关文章:

  • 荆门哪里做网站女生学建筑工程技术就业前景
  • HarmonyOS中ArkTS与Flutter数据类型对比详解
  • 【11408学习记录】考研数学核心突破:线性变换的深度解析与应用实例
  • PHP8.5 的新 URI 扩展
  • 基于单片机的 220v车载逆变电源的设计与制作(论文+图纸)
  • 网站建设定制设计南京企业网站开发
  • python|运算符
  • 基于精准营养与数字表型的糖尿病生活方式干预新范式
  • 基于开源AI大模型、AI智能名片与S2B2C商城小程序的购物中心精准零售数据架构研究
  • 深度学习进阶(八)——AI 操作系统的雏形:AgentOS、Devin 与多智能体协作
  • 旧物新生,从二手回收小程序开启绿色生活
  • 网站建设模板代理手机购物app排行榜前十名
  • openharmony之分布式购物车开发实战
  • 音乐网站建设的意义全媒体运营技巧和工具
  • 关于最简单的机器学习的梯度下降公式的求导过程
  • 【AI】一文说清楚神经网络、机器学习、专家系统
  • C语言数据结构:算法复杂度(2)
  • MySQL————索引
  • 建设网站具体步骤电子报 网站开发
  • 站外引流推广渠道专业的高密网站建设
  • (Kotlin高级特性二)kotlin内联函数(inline)的作用?为什么noinline和crossinline?
  • 网站关键词在哪里看做网站工作量怎么算
  • PostgreSQL 自动化脚本安装方案
  • 济南网络公司建站网站开发属于什么费用
  • IoT 系统中的 Saga 应用模式及其设计要点
  • WebServer类
  • 吃透 C++ 栈和队列:stack/queue/priority_queue 用法 + 模拟 + STL 标准实现对比
  • 重庆网站模版建设青岛做网站的公司排名
  • 圆桌讨论:Coding Agent or AI IDE 的现状和未来发展
  • 相机成像中的平行平面成像