python-leetcode-第 N 个泰波那契数

1137. 第 N 个泰波那契数 - 力扣(LeetCode)

解法 1:递归(O(3^n),不推荐)

递归直接按照数学定义实现,但时间复杂度高,不适合大 n。

python 复制代码
class Solution:
    def tribonacci(self, n: int) -> int:
        if n == 0:
            return 0
        elif n == 1 or n == 2:
            return 1
        return self.tribonacci(n - 1) + self.tribonacci(n - 2) + self.tribonacci(n - 3)

缺点 :大量重复计算,时间复杂度 O(3^n),n 较大时会超时。

解法 2:动态规划(O(n),空间 O(n))

使用数组存储计算结果,按顺序计算。

python 复制代码
class Solution:
    def tribonacci(self, n: int) -> int:
        if n == 0:
            return 0
        if n == 1 or n == 2:
            return 1
        dp = [0] * (n + 1)
        dp[1] = dp[2] = 1
        for i in range(3, n + 1):
            dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]
        return dp[n]

优点 :时间复杂度 O(n) ,比递归更快。

⚠️ 缺点 :空间复杂度 O(n)

解法 3:迭代(O(n),空间 O(1))

只存储 前三个变量,减少空间占用。

python 复制代码
class Solution:
    def tribonacci(self, n: int) -> int:
        if n == 0:
            return 0
        if n == 1 or n == 2:
            return 1
        a, b, c = 0, 1, 1
        for _ in range(n - 2):
            a, b, c = b, c, a + b + c
        return c

优点 :时间复杂度 O(n) ,空间复杂度 O(1),适合大 n。

相关推荐
007php00717 分钟前
百度面试题解析:Zookeeper、ArrayList、生产者消费者模型及多线程(二)
java·分布式·zookeeper·云原生·职场和发展·eureka·java-zookeeper
沐浴露z1 小时前
【JVM】详解 垃圾回收
java·jvm·算法
代码欢乐豆2 小时前
编译原理机测客观题(7)优化和代码生成练习题
数据结构·算法·编译原理
程序员小远2 小时前
软件测试之压力测试详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
Scc_hy3 小时前
强化学习_Paper_2000_Eligibility Traces for Off-Policy Policy Evaluation
人工智能·深度学习·算法·强化学习·rl
leke20033 小时前
2025年10月17日
算法
CoovallyAIHub3 小时前
Mamba-3震撼登场!Transformer最强挑战者再进化,已进入ICLR 2026盲审
深度学习·算法·计算机视觉
Aqua Cheng.3 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表
怀揣小梦想3 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
Nebula_g3 小时前
Java哈希表入门详解(Hash)
java·开发语言·学习·算法·哈希算法·初学者