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

[LeetCode] 1137. 第N个泰波那契数

题目描述:

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

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

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

示例 1:

输入:n = 4
输出:4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

示例 2:

输入:n = 25
输出:1389537

提示:

  • 0 <= n <= 37
  • 答案保证是一个 32 位整数,即 answer <= 2^31 - 1

题目链接:

. - 力扣(LeetCode)

解题主要思路:

妥妥的动态规划,需要注意的是泰波那契数是从0开始,因此第n个泰波那契数,我们需要开的空间是n+1个。

不过,做完后发现,我们始终是只需要四个int变量,因此我们可以采用滚动数组的方式来进行空间优化。

解题代码:

(非优化版本)

class Solution {
public:
    int tribonacci(int n) {
        if (n == 0) return 0;
        if (n == 1 || n == 2) return 1;
        vector<int> dp(n+1);  // dp表
        dp[0] = 0, dp[1] = dp[2] = 1;  // 初始化
        for (int i = 3; i < n+1; ++i) {
            dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
        }
        return dp[n];
    }
};

(空间优化 -- 滚动数组版本)

class Solution {
public:
    int tribonacci(int n) {
        if (n == 0) return 0;
        if (n == 1 || n == 2) return 1;
        int a, b, c, dst;  // 四个int类型变量来代替dp表
        a = 0, b = c = 1;  // 初始化
        for (int i = 3; i < n+1; ++i) {
            dst = a + b + c;
            a = b, b = c, c = dst;
        }
        return dst;
    }
};


http://www.kler.cn/a/378361.html

相关文章:

  • CAN总线学习笔记(1、CAN总线定义)
  • Axure大屏可视化模板:赋能各行各业的数据展示与管理
  • 软设师知识点-计算机网络
  • 【初阶数据结构篇】链式结构二叉树(二叉链)的实现(感受递归暴力美学)
  • 上市公司环境信息披露质量评分数据王婉菁版(2008-2023年)噪声光污染辐射废水减排等治理
  • Docsify文档编辑器:Windows系统下个人博客的快速搭建与发布公网可访问
  • 串口屏控制的自动滑轨(未完工)
  • 【论文解读】EdgeYOLO:一种边缘实时目标检测器(附论文地址)
  • Django响应
  • 滑动窗口习题篇(上)
  • cookie、session、http简单理解
  • js逆向-模拟加密
  • 【华为HCIP实战课程三十】中间到中间系统协议IS-IS路由渗透及TAG标识详解,网络工程师
  • Centos7如何实现PXE网络批量无人值守安装
  • 4499元起!苹果发布新款Mac mini:升级M4/M4 Pro 仅手掌大小
  • Centos7搭建k8s集群
  • 光学基础知识(3)光的干涉
  • [FE] React 初窥门径(四):React 组件的加载过程(render 阶段)
  • 命令解释符--shell
  • Linux - grep的正则用法
  • 新视野大学英语读写教程1第四版PDF+答案+听力音频
  • react使用Fullcalendar
  • 在 openEuler 22.03 服务器上搭建 web 服务教程
  • 2024年11月3日练习(滑动窗口算法)
  • AlDente Pro - MacBook 电池健康管理工具
  • JAVA 插入 JSON 对象到 PostgreSQL