【LeetCode: LCR 126. 斐波那契数 + 动态规划】

网易CodeWave智能生成应用实战:5分钟搞定库存管理系统(附详细配置截图) 本文详细介绍了如何利用网易CodeWave智能生成应用在5分钟内快速构建定制化库存管理系统。通过自然语言描述需求,无需编程即可生成包含产品管理、库存预警等核心功能的应用,并支持字段微调、业务流程注入等深度优化。文章附有详细配置截图,帮助用户高效实现数字化转型。 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。

答案需要取模 1e9+7(1000000007) ,如计算初始结果为:1000000008,请返回 1。

示例 1:

输入:n = 2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1
示例 2:

输入:n = 3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2
示例 3:

输入:n = 4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3

提示:

0 <= n <= 100

🌟 求解思路&实现代码&运行结果


⚡ 动态规划

🥦 求解思路
  1. 动态规划:

    • 使用动态规划的思想,通过递推公式 F(n) = F(n-1) + F(n-2) 计算斐波那契数。

    • 使用数组 dp 存储已经计算过的斐波那契数,避免重复计算。

  2. 取模操作:

    • 在每次计算 F(n) 时,对结果取模 1000000007,防止数值溢出。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。

🥦 实现代码
class Solution {

    public static final int MOD = 1000000007; // 定义模数

    public int fib(int n) {
        if (n == 0) return 0; // 边界条件:F(0) = 0
        if (n == 1) return 1; // 边界条件:F(1) = 1
        int[] fib = new int[n + 1]; // 动态规划数组
        fib[1] = 1; // 初始化 F(1)
        for (int i = 2; i <= n; i++) {
            fib[i] = (fib[i - 1] % MOD + fib[i - 2] % MOD) % MOD; // 递推计算 F(n)
        }
        return fib[n]; // 返回结果
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

软考29-上午题-【数据结构】-排序 数据结构7种排序 阅读详情

相关推荐

RK3566开发板实战:YT8512C百兆网卡调试全记录(附DTS配置避坑指南)

本文详细记录了RK3566开发板上YT8512C百兆以太网卡的调试全过程,包括硬件信号检测、DTS配置优化及常见错误排查。特别针对DTS配置中的关键参数和避坑指南进行了深入解析,为开发者提供实用的调试技巧和经验分享。

weixin_29189381的博客 267

LCR 126.斐波那契数

LeetCode LCR 126.斐波那契数

2301_76145947的博客 258

实战指南:如何优雅解决SpringBoot3与Mybatis-Plus的版本兼容性问题

本文深入解析SpringBoot3与Mybatis-Plus的版本兼容性问题,提供实战解决方案。通过Maven依赖排除策略、Gradle配置方案及自动配置覆盖策略,有效解决包冲突和初始化顺序问题,确保项目平稳升级。适用于开发者快速解决SpringBoot3与Mybatis-Plus的集成难题。

weixin_28432777的博客 596

动态规划——斐波那契问题(Java)

是一种常见的算法设计技巧,通常用于解决具有重叠子问题和最优子结构的问题。在动态规划中,将原问题分解成若干子问题,通过求解子问题的最优解来得到原问题的最优解。如何用动态规划解决问题?我们可以通过一下5步来解决动态规划问题1. 确定状态表示什么是状态表示?指在解决问题时所需要考虑和记录的关键信息。这些状态可以是问题的某种属性或特征,通过对这些状态的定义和记录,可以更好地理解问题的结构,从而设计出高效的动态规划算法。

2301_76161469的博客 2400

STM32H5 USB虚拟串口:用Classic驱动移植CDC实践

USB虚拟串口(CDC)是嵌入式系统最常用的主机通信方式之一,本质是借助USB协议模拟串口收发,无需额外驱动即可在PC上生成COM口。其实现依赖USB设备协议栈完成枚举、控制传输与批量传输。传统USBD Classic库不依赖RTOS,代码轻量、调用链短,非常适合裸机或轻量状态机架构;而USBX功能强大但需要ThreadX内核,资源开销较大。在电机控制器、传感器采集等场景中,日志输出与参数配置仅需简单的双向数据通道,Classic驱动往往更务实。本文基于STM32H5平台,详细梳理了使用Classic驱动移

weixin_29178069的博客 333

学习记录——SIMPACK生成轨道谱文件的方法

生成轨道谱文件的方法,可以用于实测轨道谱导入和自制轨道谱导入仿真

weixin_51965897的博客 7793

LCR 126. 斐波那契数【简单】

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))

伍六琪的博客 513

电源设计避坑指南:半桥LLC软启动的5个常见错误及解决方案

本文针对半桥LLC谐振变换器软启动过程中的五个常见设计错误,提供了详细的工程解决方案。重点分析了忽视谐振腔初始状态导致的电流冲击、软启动斜坡与环路带宽不匹配、开环到闭环切换时机不当、变压器偏磁以及参数未考虑边界条件等问题,并给出了包括主动预充电、自适应斜坡、最佳切换点判定等实用调试技巧,帮助工程师实现平稳可靠的电源启动。

weixin_29260291的博客 267

数据结构和算法-动态规划(1)-认识动态规划

动态规划(Dynamic Programming): 计算并存储小问题的解, 并将这些解组合成大问题的解。

qq_36115196的博客 1107

Oracle EBS与SAP数据数据切换至迁移华为MetaERP分析

Oracle EBS到华为MetaERP的数据迁移可采用“表对表复制”思路,因其模块化设计下数据模型标准化、边界清晰。核心业务对象存储在结构明确的主表中,与MetaERP模型兼容度高,便于直接映射。而SAP到MetaERP的迁移则因SAP高度优化的复杂表结构(如簇表/池表)、数据分散冗余、深度依赖配置等特点,无法简单复制,必须采用基于业务对象的迁移方法,通过视图/BAPI提取数据并进行深度转换。两种迁移的本质差异源于源系统的数据模型设计理念不同。

金牌架构师 1378

HTML满屏跳动的爱心(完整代码)

HTML语言实现满屏跳动爱心的完整代码。

AIGC 12万+

代码随想录——斐波那契数(Leetcode LCR126)

动态规划

qq_46574748的博客 340

Android性能分析——GPU资源耗尽分析(二十六)

本文分析了Android车机系统中GPU资源耗尽导致应用闪退的案例。通过日志定位到EGL_BAD_ALLOC错误,表明系统无法分配足够图形资源创建EGL上下文。问题主要发生在渲染线程初始化EGL环境时,根源在于车机系统对GPU资源的严格限制(如EGLContext数量、GPU内存等)。文中详细解读了SkiaOpenGLPipeline和EglManager的源码调用链路,指出createContext()函数中的致命断言是崩溃的直接原因,并提出了移除断言、增加重试机制、优雅降级等改进方案。该案例揭示了资源受

小旭的专栏 675

力扣OJ(5x)LCR(120+) 剑指 Offer

...

nameofcsdn的博客 5336

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

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

【动态规划】BM62 斐波那契数列

动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;说明:根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。我们也可以根据公式倒推,因为F(n)=F(n−1)+F(n−2) ,而F(n−1) 与 F(n−2)又可以作为子问题继续计算,因此可以使用递归。fib(x)=1 (当x=1,2),

wamp0001的博客 914

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

斐波那契数列,剑指offer,力扣

答案需要取模 1e9+7(1000000007) ,如计算初始结果为:1000000008,请返回 1。

m0_70437378的博客 358

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【一刷《剑指Offer》】面试题 9:斐波那契数列(扩展:青蛙跳台阶、矩阵覆盖)

当 1*2 的小矩形横着放在左上角的时候,左下角必须和横着放一个 1*2 的小矩形,而在右边还剩下 2*6 的区域,这种情形下的覆盖方法记为 f(6),因此 f(8) = f(7) + f(6)。注意:这里需要充分考虑 n 是 [0,1] 时的情况,OJ 一般测试用例设计的比较全面,会有 0,1 传进来,这个时候后续的 dp[1] = 1;用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,每次放置的时候,无非就两种放法,横着放或竖着放。可以用数学归纳法证明:f(n) = 2^(n-1)。

Elena's Blog 1210

[剑指offer]面试题 9:斐波那契数列(扩展:青蛙跳台阶、矩阵覆盖)

【代码】[剑指offer]面试题 9:斐波那契数列(扩展:青蛙跳台阶、矩阵覆盖)

weixin_40954354的博客 260

记录 斐波那契数列递归以及dp解法体会

经典老题了,考试中测试用例很少普通递归即可求解,今天在力扣上心血来潮想试试,结果朴素递归方法显示超时,于是尝试着用dp自底向上的方式求解,在构建数组的时候又了解到了打表这一简单的可以减少运行时间的暴力解法(实际上两个并不完全一样甚至完全不一样)于是通过重叠子问题和最优子结构改用了dp的自底向上方法,查找数组下标为n的元素即为f(n)的值,状态转移方程题目已经给了。F(n) = F(n - 1) + F(n - 2),其中 n > 1。开始,后面的每一项数字都是前面两项数字的和。表示)形成的序列称为。

2201_75413354的博客 344

基础算法集训第03天:递推

优化优化法二。

2401_88089822的博客 79

剑指offer之牛客与力扣——前者分类题单中的题目在后者的链接

4.12完成]JZ1JZ3JZ4JZ5= 400。

我的博客 513

算法-CodeTop(三)

本文解析了多个算法题目的解题思路和代码实现:1. 整数反转问题:通过处理溢出条件和逐位反转实现,重点关注MAX_VALUE和MIN_VALUE的边界情况。2. 约瑟夫环问题:使用递推公式解决破冰游戏,推导出最后存活者的位置。3. 数组排序问题:采用快慢指针将奇数前移。4. 斐波那契数列:展示动态规划和空间优化两种解法。5. 相邻重复字符删除:利用栈结构实现高效删除。6. Excel列名转换:处理从1开始的26进制转换问题。7. 重复子串判断:通过字符串拼接和子串查找的巧妙解法

LUCIAZZZ的博客 1282

《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_1

1. LCR 120. 寻找文件副本——数组中重复元素 2. LCR 121. 寻找目标值 - 二维数组——二维数组中查找 3. LCR 122. 路径加密——替换空格 4. LCR 123. 图书整理 I——从尾到头打印链表 5. LCR 124. 推理二叉树——重建二叉树 6. LCR 125. 图书整理 II——用两个栈实现队列 7. LCR 126. 斐波那契数——斐波那契数列 8. LCR 127. 跳跃训练——青蛙跳台阶问题 9. LCR 128. 库存管理 I——旋转数组的最小值

这里有一只小马吖 2421

记忆化搜索(5题)

是什么?是一个带备忘录的递归如何实现记忆化搜索1.添加一个备忘录(建立一个可变参数和返回值的映射关系)2.递归每次返回的时候把结果放到备忘录里3.在每次进入递归的时候往备忘录里面看看。

myhhhhhhhh的博客 1005

重刷leetcode

我打算按照下面的方式重新刷题,毕竟经常出现刷了一段时间就忘了。 代码我也打算重新写,并更新代码的完成情况。其它基础知识还没想好怎么处理,毕竟我虽然干了快三年,但是并没有学到啥东西,果然海康的产品开发就是测试和技术支持,layman都能干。 1.两数之和:哈希表 ...

qigezuishuaide的博客 497

前端codetop手撕算法

核心思路:最优解是哈希表法,用 O (n) 时间复杂度解决,空间复杂度 O (n)(存储哈希表);关键逻辑:遍历过程中计算补数,查哈希表是否存在,存在则返回,不存在则存入;优势对比:哈希表法比暴力法效率提升百倍以上(尤其数组长度大时),符合进阶要求。46. 全排列方法时间复杂度空间复杂度特点迭代法O(n)O(1)空间更优,面试推荐递归法O(n)O(n)逻辑更简洁,但有递归栈开销核心逻辑迭代法:双指针遍历,逐个反转节点指向;递归法:先反转子链表,再调整当前节点指向。

2302_80168280的博客 572
上一篇: 【LeetCode: 189. 轮转数组 + 原地反转】
下一篇: 【LeetCode: 624. 数组列表中的最大距离 + 维护最大值最小值】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值