LeetCode-LeetCode-1137. 第 N 个泰波那契数 C/C++实现 超详细思路及过程[E]

news2025/1/11 16:57:06

在这里插入图片描述

🎈归属专栏:深夜咖啡配算法
🚗个人主页:Jammingpro
🐟记录一句:Good good study,day day up

文章目录

  • LeetCode-1137. 第 N 个泰波那契数
    • 🚗题目
      • 🚆题目描述
      • 🚆题目示例
      • 🚆提示
    • 🚗题解
      • 🚆动态规划法

LeetCode-1137. 第 N 个泰波那契数

标签:动态规划、记忆化搜索、数学


🚗题目

🚆题目描述

泰波那契序列 T n T_{n} Tn 定义如下:

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

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

🚆题目示例

示例 1:

输入:n = 4
输出:4
解释:
T 3 T_{3} T3 = 0 + 1 + 1 = 2
T 4 T_{4} T4 = 1 + 1 + 2 = 4

示例 2:

输入:n = 25
输出:1389537

🚆提示

0 <= n <= 37

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


🚗题解

🚆动态规划法

由题目可以得到递推公式: T n + 3 T_{n+3} Tn+3 = T n T_{n} Tn + T n + 1 T_{n+1} Tn+1 + T n + 2 T_{n+2} Tn+2,将其变换之后,可以得到: T n T_{n} Tn = T n − 1 T_{n-1} Tn1 + T n − 2 T_{n-2} Tn2 + T n − 3 T_{n-3} Tn3。即 T 3 T_{3} T3 = T 2 T_{2} T2 + T 1 T_{1} T1 + T 0 T_{0} T0 T 4 T_{4} T4 = T 3 T_{3} T3 + T 2 T_{2} T2 + T 1 T_{1} T1,…,以此类推。下面是实现的代码,该算法的时间复杂度为O(N),空间复杂度为O(1)👇

class Solution {
public:
    int tribonacci(int n) {
        int t0 = 0, t1 = 1, t2 = 1;
        if(n == 0)return 0;
        if(n == 1 || n == 2)return 1;
        for(int i = 3; i <= n; i++)
        {
            //计算第i项的数值
            int tmp = t0 + t1 + t2;
            //下面3行代码通过后一变量覆盖前一变量,可以节约空间
            t0 = t1;
            t1 = t2;
            t2 = tmp;
        }
        return t2;
    }
};

文章结语:这道题是一道简单题,算是也是动态规划入门类题目了!!
🎈欢迎进入深夜咖啡配算法专栏,查看更多文章。
如果上述内容有任何问题,欢迎在下方留言区指正b( ̄▽ ̄)d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1260090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础课11——对话管理

智能客服的“对话管理”模块是一种智能学习算法&#xff0c;它通过学习和整理用户的历史对话记录&#xff0c;提高机器的对话回复效率和质量。 1.对话管理的模块 这个模块根据用户输入的内容&#xff0c;进行会话节点选择、会话状态迁移和维护等动作&#xff0c;模块内部可以…

解决Linux中文乱码、字体横向问题

解决Linux中文乱码问题 1、locale --查看当先系统编码集 2、echo $LANG --查看当前使用的语言 3、vim ~/.bash_profile --修改配置文件 4、加入以下语句 export LC_ALL"zh_CN.UTF-8" export LANG"zh_CN.UTF-8" 5、source ~/.bash_profile --更新配置文…

智能优化算法应用:基于缎蓝园丁鸟算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于缎蓝园丁鸟算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于缎蓝园丁鸟算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.缎蓝园丁鸟算法4.实验参数设定5.算法结果…

面试常问-如何判断链表有环、?

如何判断链表有环 题目&#xff1a;解决方案一&#xff1a;解决方案二&#xff1a;解决方案三&#xff1a; 题目&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;…

小黑子—Git学习

Git分布式版本控制工具 一、 git概述1.1 简介1.2 下载和安装 二、 Git代码托管服务2.1 常用的Git代码托管服务2.2 使用GitHub代码托管服务2.3 使用码云代码托管服务 三、Git常用命令3.1 Git全局设置3.2 获取Git仓库3.3 工作区、暂存区、版本库概念3.4 git工作区文件中的状态3.5…

6、Qt使用Log4Qt日志

一、知识点 1、Log4Qt有三部分 logger&#xff1a;负责捕获日志信息 layout&#xff1a;负责使用不同的样式输出日志 appender&#xff1a;负责输出信息到不同的目的地&#xff0c;比如数据库、文件、控制台等等 2、 日志级别如下&#xff0c;从上往下依次递增 ALL&#xff1a;…

echarts实际开发中遇到的问题

当tooltip内容过高时&#xff0c;增加滚动条 enterable:true, extraCssText: height:500px;overflow-y:auto;

Linux虚拟化的模式

三种虚拟化方式&#xff1a;完全虚拟化&#xff08;Full virtualization&#xff09;、硬件辅助虚拟化&#xff08;Hardware-Assisted Virtualization&#xff09;、半虚拟化&#xff08;Paravirtualization&#xff09;。 服务器上的虚拟化软件&#xff0c;多使用 qemu&#…

School training competition ( Second )

A. Medium Number 链接 : Problem - 1760A - Codeforces 就是求三个数的中位数 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std; typedef long long LL; const int N 2e510;inline void …

【无头双向链表和链表练习题2】

文章目录 以给定值x为基准将链表分割成两部分&#xff0c;所有小于x的结点排在大于或等于x的结点之前输入两个链表&#xff0c;找出它们的第一个公共结点。给定一个链表&#xff0c;判断链表中是否有环无头双向链表的模拟实现ArrayList&#xff08;顺序表&#xff09;和LinkedL…

Netty I/O模型和线程模型

目录 1.概述 1.1 为什么使用Netty 1.2 Netty的优势 1.3 Netty的常见使用场景 2.Netty高性能的原因 2.1 I/O模型 2.1.1 阻塞IO 2.1.2 IO复用模型 2.2 线程模型 2.2.1 线程模型1&#xff1a;传统阻塞 I/O 服务模型 2.2.2 线程模型2&#xff1a;Reactor 模式 2.2.2.1 …

rdf-file:API

一&#xff1a;组件架构 intefaces模块&#xff1a;主要包含用户使用接口APItools模块&#xff1a;包含组件内核实现的文件操作工具codec模块&#xff1a;对文件结构&#xff0c;行数据&#xff0c;字段数据进行编码解码meta模块&#xff1a; 元数据配置以及加载loader/extensi…

中低压MOSFET 2N7002KW 60V 300mA 双N通道 SOT-323封装

2N7002KW小电流双N通道MOSFET&#xff0c;电压60V电流300mA&#xff0c;采用SOT-323封装形式。超高密度电池设计&#xff0c;适用于极低的ros (on)&#xff0c;具有导通电阻和最大直流电流能力&#xff0c;ESD保护。可应用于笔记本中的电源管理&#xff0c;电池供电系统等产品应…

CANdelaStudio 使用教程6 编辑DTC

文章目录 DTC的导入导出定义 19 服务的DTC编辑快照数据 DTC的导入导出 DTC导出的文件是 Excel 文件&#xff0c;可以先将这个池子的DTC导出去修改&#xff0c;再导入进来&#xff0c;完成DTC的修改 定义 19 服务的DTC 编辑快照数据

Java Thread 介绍

线程是操作系统调度的最小单元, 也叫轻量级进程。它被包含在进程之中, 是进程中的实际运作单位。 同一进程可以创建多个线程, 每个线程都有自己独立的一块内存空间, 并且能够访问共享的内存变量。 1 线程的分类 在 Java 中, 线程可以分为 2 种 守护线程: 守护线程是为用户线程…

使用Terraform创建Docker镜像和容器

为了实现自动化操作&#xff0c;Terraform需要明确指定所使用的提供者。因此&#xff0c;在主要的main.tf文件中&#xff0c;需要提供提供者的名称、源和版本信息。对于Docker&#xff0c;可以在main.tf中使用以下代码块。 1 Terraform配置模块 使用块和资源创建Terraform脚本…

nodejs+vue+elementui+express青少年编程课程在线考试系统

针对传统线下考试存在的老师阅卷工作量较大&#xff0c;统计成绩数据时间长等问题&#xff0c;实现一套高效、灵活、功能强大的管理系统是非常必要的。该系统可以迅速完成随机组卷&#xff0c;及时阅卷、统计考试成绩排名的效果。该考试系统要求&#xff1a;该系统将采用B/S结构…

C++类与对象(6)—初始化列表、explicit关键字、static成员

目录 一、初始化列表 1、定义 2、注意事项 3、尽量使用初始化列表初始化 4、初始化顺序 二、 explicit关键字 1、定义 2、特点 三、static成员 1、定义 2、特性 3、例题 一、初始化列表 下面这段代码可以正常编译&#xff1a; class A { private:int _a1;//成员…

innovus如何在floorplan view显示所有module

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如题&#xff0c;innovus的图形界面在floorplan view下默认只能显示instance数量超过100个的module&#xff0c;如果要显示更小的module&#xff0c;需要在VIEW-Set Perference…

LeetCode Hot100 394.字符串解码

题目&#xff1a; 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的…