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

第N个泰波那契数

泰波那契序列 Tn 定义如下: 

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

给你整数 n,请返回第 n 个泰波那契数 Tn 的值

动态规划(dp数组):

class Solution {
public:int tribonacci(int n) {// 创建dp数组,大小为n+1,用于存储泰波那契数列的前n项vector<int> dp(n + 1);// 边界条件1:当n=0时,直接返回0(泰波那契数列定义)if (n == 0)return 0;// 边界条件2:当n=1或n=2时,直接返回1(泰波那契数列定义)if (n < 3)return 1;// 初始化dp数组的前3项(泰波那契数列的起始值)dp[0] = 0;  // 第0项为0dp[1] = 1;  // 第1项为1dp[2] = 1;  // 第2项为1// 从第3项开始迭代计算,直到第n项for (int i = 3; i < n + 1; i++) {// 泰波那契数列定义:第i项 = 前3项之和dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];}// 返回第n项的结果return dp[n];}
};

优化:(空间O(n)->O(1)):

class Solution {
public:int tribonacci(int n) {// 边界条件1:当n=0时,直接返回0(泰波那契数列定义)if (n == 0)return 0;// 边界条件2:当n=1或n=2时,直接返回1(泰波那契数列定义)if (n < 3)return 1;// 初始化变量,存储最近3项的结果:// a 表示第 i-3 项(初始为 trib(0) = 0)// b 表示第 i-2 项(初始为 trib(1) = 1)// c 表示第 i-1 项(初始为 trib(2) = 1)int a = 0, b = 1, c = 1;// 从第3项开始迭代计算,直到第n项for (int i = 3; i < n + 1; i++) {// 计算当前项:第i项 = 前3项之和(trib(i) = trib(i-1) + trib(i-2) + trib(i-3))int d = a + b + c;// 更新变量,为下一轮计算做准备:// a 移动到原来的 b(即 i-2 项变为 i-3 项)a = b;// b 移动到原来的 c(即 i-1 项变为 i-2 项)b = c;// c 移动到当前计算的 d(即当前项变为 i-1 项)c = d;}// 循环结束后,c 中存储的就是第n项的结果return c;}
};

 

http://www.lryc.cn/news/608808.html

相关文章:

  • Coze 打通飞书多维表格,实现数据增删改查操作实战详解
  • 机器学习sklearn:支持向量机svm
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——9. 接入真实硬件:驱动USB摄像头
  • 李宏毅深度学习教程 第8-9章 生成模型+扩散模型
  • 【Unity3D实例-功能-镜头】俯视角
  • JVM-垃圾回收器与内存分配策略详解
  • [创业之路-530]:创业公司五维架构设计:借鉴国家治理智慧,打造敏捷型组织生态
  • 智变时代:AI 如何重构工作边界与行业生态?
  • 【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
  • 计算机网络:如何在实际网络中进行子网划分
  • 从零开始学Express,理解服务器,路由于中间件
  • C#模式匹配用法与总结
  • Supergateway教程
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现各类垃圾的分类检测识别(C#代码UI界面版)
  • 玩转 Playwright 有头与无头模式:消除差异,提升爬虫稳定性
  • LLM - 智能体工作流设计模式
  • 小红书开源dots.ocr:单一视觉语言模型中的多语言文档布局解析
  • 【设计模式】5.代理模式
  • [LeetCode优选算法专题一双指针——有效三角形的个数]
  • Python 程序设计讲义(60):Python 的函数——递归函数
  • 从“配置地狱”到“云端乐园”——Nacos 如何成为分布式微服务配置中心的“定海神针”
  • 【MySQL】MySQL中锁有哪些?
  • ethtool,lspci,iperf工具常用命令总结
  • 26李林880高数第一章 函数、极限、连续
  • Shell脚本-变量的定义规则
  • 西门子PLC基础指令4:输出指令、立即输出指令
  • JavaScript 性能优化实战指南:从运行时到用户体验的全面提升​
  • adb 与pad 交互方法
  • MyBatis动态SQL精要:从<if>到<foreach>的灵活拼接之道
  • Go语言声明变量