LeetCode.1137-第N个泰波那契数(N-th Tribonacci Number)

名企面试题之泰波那契数列Tribonacci,其定义式为T(n)=T(n-1)+T(n-2)+T(n-3) import java.util.concurrent.TimeUnit; /** * 泰波那契数列 (Tribonacci Number) 即把斐波那契数列 (Fibonacci Number) 的概念推广至三个数。 * T(0)=1, T(1)=1, T(2)=2, T(n)=T(n-1)+T(n-2)+T(n-3), 用最优方式求T(n) * * 文中的三个算法的时间复杂度都是线性的,网上有log(n)级的通过矩阵乘法求解, * 自己还没有看明白,等以后有机会在研究吧 阅读详情

这是小川的第409次更新,第441篇原创

看题和准备

今天介绍的是LeetCode算法题中Easy级别的第260题(顺位题号是1137)。Tribonacci(泰波那契)序列Tn定义如下:

对于n> = 0,T0 = 0,T1 = 1,T2 = 1,并且T(n+3) = T(n) + T(n+1) + T(n+2)。

给定n,返回Tn的值。

例如:

输入:n = 4
输出:4
说明:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

输入:n = 25
输出:1389537

注意:

  • 0 <= n <= 37

  • 答案保证小于32位整数,即 答案 <= 231 - 1。

第一种解法

泰波那契,和斐波那契数列相似,只是比斐波那契数列多了一项,后一项的值为前三项的值之和。

暴力解法,直接使用递归,会超时。

public int tribonacci(int n) {
    if (n <= 2) {
        return n == 0 ? 0 : 1;
    }
    return tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3);
}

第二种解法

在第一种解法中,使用了递归,虽然代码变简单了,但是多了许多重复计算,比如T(4) = T(3)+T(2)+T(1) = T(0)+T(1)+T(2)+T(2)+T(1),只是计算n为4时,就计算了两次n为0和n为1,当n更大时,重复的计算会严重影响代码计算速度。

我们可以使用数组,将每一步的计算结果都保存起来,当新的一项需要前面三项的计算结果时,可以直接从数组中取,减少不必要的重复计算。

此解法的时间复杂度是O(N),空间复杂度为O(N),使用了一个容量为n+1的数组。

public int tribonacci2(int n) {
    if (n <= 2) {
        return n == 0 ? 0 : 1;
    }
    int[] arr = new int[n+1];
    arr[1] = arr[2] = 1;
    for (int i=3, len=arr.length; i<len; i++) {
        arr[i] = arr[i-1]+arr[i-2]+arr[i-3];
    }
    return arr[n];
}

第三种解法

在第二种解法的基础上,我们还可以继续优化。

泰波那契数列中,新的一项需要借助前三项的值得到,例如T(6) = T(5)+T(4)+T(3),在第二种解法中,我们却将T(0)、T(1)、T(2)的值都存起来了,但是计算T(6)又用不到T(0)、T(1)、T(2),浪费了存储空间。对此,我们可以使用局部变量替换数组,只保留前三项的值,每次计算完新的一项值后,更新一次前三项的值即可。

此解法的时间复杂度是O(N),空间复杂度为O(1),只使用了4个局部变量。

public int tribonacci3(int n) {
    if (n <= 2) {
        return n == 0 ? 0 : 1;
    }
    int T0 = 0, T1 = 1, T2 = 1;
    int temp = 0;
    for (int i=3; i<n+1; i++) {
        temp = T0 + T1 + T2;
        T0 = T1;
        T1 = T2;
        T2 = temp;
    }
    return temp;
}

小结

算法专题目前已更新LeetCode算法题文章266+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

Python爬虫实战:5分钟抓取东方财富股票数据并保存为CSV 在投资分析与量化研究的日常工作中,获取结构化、可用的金融数据往往是第一步。对于个人投资者和量化入门者而言,如何高效获取A股全市场行情,常常面临网页动态加载、反爬机制与数据整理繁琐等挑战。本文从数据采集的基础概念出发,介绍如何利用Python这一通用编程语言,通过requests库请求财经网站公开的HTTP接口,获取返回的JSON数据,再借助pandas进行字段映射、数据清洗与表格化处理。这种方式相比传统页面解析具有响应快、结构稳定、易于批量操作的显著优势,尤其适合构建个人股票数据池、验证选股策略或进行市场情 阅读详情

相关推荐

Ribo-seq数据解析:从翻译效率计算到动态可视化分析

本文系统介绍了Ribo-seq(核糖体印迹测序)数据分析全流程,从核心的P-site定位、翻译效率计算,到差异翻译分析和动态可视化。重点阐述了如何利用Ribo-seq高分辨率数据揭示基因表达在翻译层面的精细调控,并提供了从数据处理到生物学解读的实用工具与避坑指南。

weixin_28559803的博客 422

自用笔记17——泰波那契数列

int tribonacci(int n){ int t=0,a=0,b=1,c=1,i=3; if(n==0) return 0; if(n==1) return 1; if(n==2) return 1; for(i=3;i<=n;i++) { t=a+b+c; ...

Rye_dt的博客 1326

在matlab中运行自带的模块(以CCSDS LDPC Decoder模块为例)

最新版的获取需要注册 MathWorks 账户 访问账户注册页面:www.mathworks.cn/mwaccount/register。下载新版本或历史版本的MATLAB,请登陆:https://www.mathworks.cn/downloads 并下载。点击此处可以拷贝调用例程的命令,在matlab命令行输入即可自动获取代码。可以看到页面中写了该模块需要在R2022b以上版本使用。运行.m文件可以生成simulink运行所需要的数据。可以看到左侧下载到了官方历程的文件。之后双击slx文件即可打开。

qq_28455081的博客 888

名企的笔试口试题 (Tribonacci Number)

泰波拿契數 (Tribonacci Number) 即把費波拿契數 (Fibonacci Number) 的概念推廣至三個數。T零 = 零, T一 = T二 = 一, Tn = Tn-一 + Tn-二 + Tn-三 请你写一个算法,输入n,输出第n个Tribonacci数mod 2009的结果。这个标题是泛滥名企的笔试口试题,据我所知,二零零九年微软海笔就出了这个题。此外据称google也出国这个

liangdiwei的专栏 579

CloudCompare点云变换保姆级教程:从平移、旋转到绕任意点旋转,一次搞定

本文提供CloudCompare点云变换的全面教程,涵盖从基础平移、旋转到绕任意点旋转的高级技巧。通过详细的操作步骤和实战案例,帮助用户掌握点云数据处理的核心技能,提升三维模型对齐和变换的效率与精度。

weixin_28717969的博客 291

深入理解 ABAP CDS Analytical Query 中的 Measures,从金额语义到缩放、精度与符号显示

在 ABAP CDS Analytical Query 中,Measure 不仅是数值字段,更是承载聚合、计算与语义的分析对象。它需通过 @Semantics.amount.currencyCode 和 @Semantics.quantity.unitOfMeasure 显式绑定币种与单位,确保计算正确性。复杂查询中,虚拟字段(如 virtual CurrencyClosedSalesOrders)用于维护结果的语义上下文。此外,@UI.hidden 与 @Consumption.hidden 控制显示与使

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 25

8月8日的每日一题-tribonacci

所以究竟为什么是泰波那契,而不是崔波那契? class Solution { public: int tribonacci(int n) { //递进 if(n == 0){ return 0; } if(n <= 2){ return 1; } //此时n起码为3 int t_3; int t_0 = 0 , t_1

孤山的都灵族如果不会打铁怎么办 188

Android 14.0 SystemUI状态栏居中显示时间和修改时间显示样式

在14.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了

安卓兼职framework和app工程师的博客 979

Leetcode-1137. N-th Tribonacci Number 第 N 个泰波那契数 (DP)

题目 泰波那契序列 Tn 定义如下: T0=0T_0 = 0T0​=0, T1=1T_1 = 1T1​=1, T2=1T_2 = 1T2​=1, 且在 n >= 0 的条件下 Tn+3=Tn+Tn+1+Tn+2T_{n+3} = T_{n} + T_{n+1} + T_{n+2}Tn+3​=Tn​+Tn+1​+Tn+2​ 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 链接:https://leetcode.com/problems/n-th-tribonacci-number/ The

JamieLuo的博客 311

电池管理系统(BMS)软件:CATL BMS二次开发_(1).CATL BMS软件概述

CATL BMS软件的保护机制是确保电池组安全和可靠运行的关键部分。通过高精度的传感器和智能算法,BMS可以实时监测电池组的状态,及时采取保护措施。二次开发中,可以根据特定的应用需求,增加新的传感器、优化算法、扩展通信接口等,进一步提高系统的性能和可靠性。维护和扩展则是确保系统长期稳定运行的重要手段。希望以上内容对您理解CATL BMS软件的保护机制有所帮助。如果您有任何进一步的问题或需要更详细的解释,欢迎随时提问。

zhubeibei168的博客 1461

【Unity实战100例】Unity循环UI界面切换卡片功能

功能包括:可以设置半径,高度,速度,元素数量用户可以根据自己的实际需求接入 制作思路:创建每个元素对应的虚拟点,通过旋转管理这些虚拟点,然后把旋转信息和位置信息同步给实际的元素

纯技术流日常开发商业开发记录总结等 7718

[Swift]LeetCode1137. 第 N 个泰波那契数 | N-th Tribonacci Number

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/streng...

weixin_30729609的博客 193

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

data+scenario+science+insight 836

LeetCode 1137:第 N 个泰波那契数(N-th Tribonacci Number)解法汇总

文章目录Solution 更多LeetCode题解 The Tribonacci sequence Tn is defined as follows: T0=0T_0 = 0T0​=0, T1=1T_1 = 1T1​=1, T2=1T_2 = 1T2​=1, and Tn+3=Tn+Tn+1+Tn+2T_{n+3} = T_n + T_{n+1} + T_{n+2}Tn+3​=Tn​+Tn+1​+...

Utopiabuntu的博客 419

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

leetcode 1137. N-th Tribonacci Number 第 N 个泰波那契数-耗时100

Problem:耗时100%,累加,赋值。

邹九的个人博客 90

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

leetcode 1137. N-th Tribonacci Number(第N个泰波那契数)

leetcode 1137

蓝羽飞鸟的博客 443

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

1137. 第 N 个泰波那契数

1137. 第 N 个泰波那契数题目题目来源题目描述解题解题思路代码 题目 题目来源 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/n-th-tribonacci-number 题目描述 泰波那契序列 Tn 定义如下: T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 示例 1: 输入:n = 4 输出:4 解释:

qq_36068806的博客 356

1137. N-th Tribonacci Number*

1137. N-th Tribonacci Number* https://leetcode.com/problems/n-th-tribonacci-number/ 题目描述 The Tribonacci sequence Tn is defined as follows: T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n &gt...

珍妮的选择的博客 438

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

题目描述 泰波那契序列 Tn 定义如下: T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/n-th-tribonacci-number 示例 示例1: 输入:n = 4 输出:4 解释: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4

qq_41596063的博客 168

leetcode1137-N-th Tribonacci Number

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。这都题目很容易得到dp公式dp[i] = dp[i-1]+dp[i-2]+dp[i-3],注意处理边界条件。给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

我的程序人生 258

leetcode 1137. N-th Tribonacci Number(python)

描述 The Tribonacci sequence Tn is defined as follows: T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0. Given n, return the value of Tn. Example 1: Input: n = 4 Output: 4 Explanation: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4 Example 2: Inp

王大呀呀的博客 385

1137. N-th Tribonacci Number[Easy](Leetcode每日一题-2021.08.08)

111

Bryan要加油 308

【Leetcode】1137. N-th Tribonacci Number

题目地址: https://leetcode.com/problems/n-th-tribonacci-number/ 给定一个序列TnT_nTn​的递推式Tn+3=Tn+Tn+1+Tn+2,n≥0T_{n+3}=T_n+T_{n+1}+T_{n+2}, n\ge 0Tn+3​=Tn​+Tn+1​+Tn+2​,n≥0,初始条件T0=0,T1=T2=1T_0=0,T_1=T_2=1T0​=0,T1​=T2​=1。给定nnn,求TnT_nTn​。 开个长333的数组然后循环更新即可。代码如下: public c

数学、算法爱好者的博客 155

力扣(leetcode) 1137. 第 N 个泰波那契数 (记忆化递归) (滚动数组) (动态规划) (状态压缩)

题目在这:https://leetcode-cn.com/problems/n-th-tribonacci-number/ 法一: (记忆化递归) 思路分析: 本题单纯使用递归方法直接超时。 其实可以看到,当求n的时候,我们需要 三个数, n-1,n-2,n-3 这样就会重复递归很多的数值。 可以使用python3 自带的记忆方法。 完整代码 class Solution: @lru_cache def tribonacci(self, n: int) -> int:

深度不学习!!的博客 628

LeetCode 1137. N-th Tribonacci Number【递推/递归/动态规划/打表/矩阵快速幂/数学】简单

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N) )。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008 ,请返回 1 。 ...

memcpy0的博客 502

【动态规划一】斐波拉契数列模型 && 路径问题

状态表示是指dp表(一维数组/二维数组)里面的值所表示的含义如何得到状态表示?1.1 题目要求1.2 经验 + 题目要求1.3 分析问题的过程中,发现重复子问题。

C/C++技术栈 954
上一篇: 一次线上图片打印失败问题排查
下一篇: LeetCode.1154-一年中的第几天(Day of the Year)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值