当前位置: 首页 > 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            

相关文章:

leetcode:1137 Tribonacci 数列

1137 Tribonacci 数列 题目链接https://leetcode.cn/problems/n-th-tribonacci-number/ 题目描述 Tribonacci 数列是一种类似于斐波那契数列的数列&#xff0c;不同之处在于&#xff0c;Tribonacci 数列中的每一项是前面三项的和。给定整数 n&#xff0c;求出 Tribonacci 数…...

简单讲一下API的作用以及介绍

API全称Application Programming Interface&#xff0c;即应用程序编程接口&#xff0c;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定&#xff0c;用于传输数据和指令&#xff0c;使应用程序之间可以集成和共享数据资源。 API 接口简介 一、基本概念…...

猎板道出PCB免费打样真相:制造成本究竟给了谁?

猎板PCB作为电路板特殊定制的厂家&#xff0c;曾经推出了PCB免费打样活动以吸引新客户。从经营的角度来看&#xff0c;免费打样的成本实际上最终由稳定客户承担。免费打样的客户往往仅在有免费机会时下单&#xff0c;而稳定的合作客户则为这些促销活动买单。这种模式长期下来可…...

Linux 竞争与并发(学习总结)

在Linux驱动开发中&#xff0c;“并发”和“竞争”是两个重要的概念&#xff0c;它们涉及到多任务环境下资源的管理和使用。 并发 (Concurrency) 并发指的是在同一时间段内&#xff0c;多个任务看似同时运行的现象。实际上&#xff0c;在单核处理器上&#xff0c;这通常是通过…...

SaaS初创企业需求建模指南

所以你已经准备好进入市场&#xff0c;你有宏大的目标&#xff0c;并且充满激情。 但等等。 你要如何 实现 这些目标呢&#xff1f; 你设置了 正确的 目标吗&#xff1f; 而且你的目标是 可实现的吗&#xff1f; 那么&#xff0c;如何回答这些问题呢&#xff1f; 进入需求…...

MySQL最左匹配原则

MySQL索引的加左原则&#xff0c;也被称为最左匹配原则&#xff08;Leftmost Prefix Rule&#xff09;或最左前缀规则&#xff08;Leftmost Prefixes&#xff09;&#xff0c;是指在创建复合索引时&#xff0c;应将经常用于查询的列放在索引的最左边&#xff0c;以便MySQL能够更…...

日常开发1:居中处理

开发的时候总会遇到两个空间上下两层,然后居中排放,如果只是知道下方或者上方控件的具体位置点,但是不知道另外一个控件的集体点位,应该怎么处理呢? 如上图所示,知道imageview 下方中间的点的位置(这里暂时定义image的宽高已知),上方是textview,那么如何布局呢? 简单解决方法…...

css弹性盒子——flex布局

目录 ​编辑 一、flex容器的样式属性(父元素属性) display:flex 弹性盒子&#xff0c;实现水平排列,在父盒子设置&#xff0c;适用于单行/单列 justify-content 二、flex元素的样式属性(子元素属性) 1.flex-grow 2.flex-shrink 3.flex-basis 4.flex组合属性 flex:flex-…...

亚马逊云科技 Gen BI 2024-09-04 上海站QuickSight

机缘 我又来了&#xff0c;感觉不上班比上班还要忙 天天像特种工一天&#xff0c;今天有度过的充实的一天&#xff0c;上午去图书馆&#xff0c;下午去了 亚马逊云科技 Gen BI 技术体验日 。 具体照片可以去 这里看 哈哈&#xff0c;这个就是我了 商业智能的趋势 根据艾瑞咨…...

【Qt】Qt和JavaScript使用QWebChannel交互

问题 问题一&#xff1a; 问题描述&#xff1a;运行时&#xff0c;Qt向Js端发送消息没有问题&#xff0c;Js端向Qt端发送消息时失败 报错&#xff1a;Cannot invoke unknown method of index -1 on object webTransport(0x…) 原因及解决办法&#xff1a;使用Qt 5.11.2编译生…...

码住!15个爆好用知识库软件工具分享

市场趋势&#xff1a;全球知识库管理软件的市场规模发展速度非常快&#xff0c;并且未来几年内仍将继续保持增长。据Verified Market Research预测&#xff0c;2028年知识库管理软件的全球市场份额将增长到588.1亿美元&#xff0c;复合年增长率达12.67%。 知识库软件可以帮助企…...

MybatisPlus中@EnumValue注解介绍、应用场景和示例代码

EnumValue注解详细介绍 功能概述&#xff1a; EnumValue注解标记在枚举类型的字段上&#xff0c;表示该字段是枚举值在数据库中存储的实际值。这对于枚举的持久化是关键&#xff0c;确保枚举在数据库中的表示与Java枚举类的一致性。 主要用途&#xff1a; 字段指定&#xff1a;…...

【计算机网络】描述TCP建立连接与断开的过程

一、TCP连接的建立与断开 1、建立连接——三次握手 1、A的TCP向B发出连接请求报文段 其首部中的同步位SYN 1&#xff0c;并选择序号seq x&#xff0c;表明传送数据时的第一个数据字节的序号是 x 2、B的TCP收到连接请求报文段后&#xff0c;如同意&#xff0c;则发回确认。 B …...

CSS学习14[重点]

定位 前言一、定位二、定位模式1. 静态定位 static2. 相对定位 relative3. 绝对定位 absolute4. 子绝父相5. 绝对定位的盒子水平居中 6. 固定定位&#xff08;fixed&#xff09;7. 叠放次序&#xff08;z&#xff09;三、四种定位总结四、定位模式转换 前言 为什么学习定位&am…...

力扣 | 递归 | 区间上的动态规划 | 486. 预测赢家

文章目录 一、递归二、区间动态规划 LeetCode&#xff1a;486. 预测赢家 一、递归 注意到本题数据范围为 1 < n < 20 1<n<20 1<n<20&#xff0c;因此可以使用递归枚举选择方式&#xff0c;时间复杂度为 2 20 1024 ∗ 1024 1048576 1.05 1 0 6 2^{20…...

黑白格

题目描述 小杨有一个 n 行 m 列的网格图&#xff0c;其中每个格子要么是白色&#xff0c;要么是黑色。 小杨想知道至少包含 k 个黑色格子的最小子矩形包含了多少个格子。 输入格式 第一行包含三个正整数 n,m,k&#xff0c;含义如题面所示。 之后 n 行&#xff0c;每行⼀个…...

数据链路层(MAC地址)

文章目录 数据链路层&#xff08;MAC地址&#xff09;1、以太网2、以太网帧格式3、MAC地址4、对比理解 MAC 地址和 IP 地址5、最大传输单元&#xff08;MTU&#xff09;6、MTU 对 IP 协议的影响7、MTU 对 UDP 协议的影响8、MTU 对 TCP 协议的影响9、查看硬件地址和 MTU10、ARP …...

【ruby java】登陆功能/邮件发送模版240903

Rails 风格登录系统添加全面而详细的注释&#xff0c;解释每个部分的功能和用途。​​​​​​​​​ 详细注释&#xff0c;解释了每个文件和代码块的功能。以下是一些关键点的总结&#xff1a; 1. 控制器&#xff08;Controllers&#xff09;: - ApplicationController: …...

告别格式不兼容烦恼!ape转换mp3,分享3个简单方法

各位读者们&#xff0c;你们是否有过这种体验&#xff1a;满怀期待地在网上下载一首好听的歌曲&#xff0c;结果怎么点击手机都播放不了&#xff0c;定睛一看&#xff0c;弹窗显示“无法播放该音频文件”。这是为什么呢&#xff1f;原来那首歌的音频格式是ape&#xff0c;不被手…...

Java核心知识体系-并发与多线程:线程基础

1 先导 Java线程基础主要包含如下知识点&#xff0c;相信我们再面试的过程中&#xff0c;经常会遇到类似的提问。 1、线程有哪几种状态? 线程之间如何转变&#xff1f; 2、线程有哪几种实现方式? 各优缺点&#xff1f; 3、线程的基本操作&#xff08;线程管理机制&#xff…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示&#xff1a;在用tensordoard的时候一定一定要用绝对位置&#xff0c;例如&#xff1a;tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾&#xff1a; tensorboard的发展历史和原理tens…...