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

leetcode:1137 Tribonacci 数列

1137 Tribonacci 数列

题目链接https://leetcode.cn/problems/n-th-tribonacci-number/

题目描述

Tribonacci 数列是一种类似于斐波那契数列的数列,不同之处在于,Tribonacci 数列中的每一项是前面三项的和。给定整数 n,求出 Tribonacci 数列的第 n 项。
Tribonacci 数列的前几项为:
T(0) = 0
T(1) = 1
T(2) = 1
T(3) = T(0) + T(1) + T(2) = 0 + 1 + 1 = 2
T(4) = T(1) + T(2) + T(3) = 1 + 1 + 2 = 4
依此类推…

题目解法

要计算第 n 项的 Tribonacci 数,需要遵循如下步骤:

  1. 当 n 为 0 时,Tribonacci 数为 0;当 n 为 1 或 2 时,Tribonacci 数为 1。
  2. 对于 n 大于等于 3 的情况,则可以利用前三项的和来计算第 n 项。

我们采用动态规划的方法,从第 3 项开始,我们可以通过保存前面三项的值来计算当前项。我们使用三个变量 left、middle 和 right 来分别表示前面三项,然后迭代地更新它们的值以计算出第 n 项。

动态规划(Dynamic Programming, DP)是一种算法设计思想,适用于解决具有重叠子问题和最优子结构性质的问题。动态规划通过将问题分解为更小的子问题来求解,同时保存这些子问题的解,以避免重复计算,最终得到问题的最优解。

从 i = 3 到 i = n 逐步计算 Tribonacci 数。每次计算后更新 left、middle 和 right 的值。

时间复杂度:O(n),只需要计算 n 项。

代码实现

C++版本:

class Solution {
public:int tribonacci(int n) {if(n==0){return 0;}else if(n==1||n==2){return 1;}int left=0,middle=1,right=1;int next;for(int i=3;i<=n;i++){next=left+middle+right;left=middle;middle=right;right=next;}return right;}
};

GO版本:

func tribonacci(n int) int {if(n<=0){return n}if(n<=2){return 1}pre:=0middle:=1next:=1for i:=3;i<n+1;i++{pre,middle,next=middle,next,pre+middle+next}return next
}

python版本:

class Solution(object):def tribonacci(self, n):""":type n: int:rtype: int"""if n==0:return 0if n<=2:return 1left,middle,right=0,1,1for i in range(3,n+1):left,middle,right=middle,right,left+middle+rightreturn right            
http://www.lryc.cn/news/431292.html

相关文章:

  • 简单讲一下API的作用以及介绍
  • 猎板道出PCB免费打样真相:制造成本究竟给了谁?
  • Linux 竞争与并发(学习总结)
  • SaaS初创企业需求建模指南
  • MySQL最左匹配原则
  • 日常开发1:居中处理
  • css弹性盒子——flex布局
  • 亚马逊云科技 Gen BI 2024-09-04 上海站QuickSight
  • 【Qt】Qt和JavaScript使用QWebChannel交互
  • 码住!15个爆好用知识库软件工具分享
  • MybatisPlus中@EnumValue注解介绍、应用场景和示例代码
  • 【计算机网络】描述TCP建立连接与断开的过程
  • CSS学习14[重点]
  • 力扣 | 递归 | 区间上的动态规划 | 486. 预测赢家
  • 黑白格
  • 数据链路层(MAC地址)
  • 【ruby java】登陆功能/邮件发送模版240903
  • 告别格式不兼容烦恼!ape转换mp3,分享3个简单方法
  • Java核心知识体系-并发与多线程:线程基础
  • KRaft模式下的Kafka启动指南:摆脱Zookeeper依赖
  • 【数据库】MySQL-基础篇-函数
  • dp练习【4】
  • php 实现推荐算法
  • 相机光学(三十六)——光圈
  • 数据结构——树和二叉树
  • 142. Go操作Kafka(confluent-kafka-go库)
  • spring boot(学习笔记第十九课)
  • docker安装 redis 并且加密开启SSL/TLS通道
  • 什么是ARM架构?什么是X86架构?两者的区别是什么?
  • 【vscode】vscode paste image插件设置