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

目录

题目地址:

我们直接看题解吧:

解题方法:

难度分析:

审题目+事例+提示:

解题思路(动态规划):

代码实现:

补充说明:

代码(优化):


题目地址:

LCR 126. 斐波那契数 - 力扣(LeetCode)

难度:简单

今天刷斐波那契数列,大家有兴趣可以点上看看题目要求,试着做一下

我们直接看题解吧:

解题方法:

方法1,递归(效率太慢)

会出现重复,例如f(5)=f(4)+f(3),f(4)=f(3)+f(2),此时f(3)重复了,此外,若递归过深则会造成栈溢出情况。

方法2,(递推)动态规划(或循环求余)

难度分析:

总体应该不算难,毕竟一般学校应该会用递归法讲这到题

审题目+事例+提示:

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

解题思路(动态规划):

由于斐波那契数列是0,1,1,2,3,5,8....即从0 开始,通过循环,逐步求出下一位数(n=(n-1)+(n-2)),通过一个变量sum保存,类似于递增,因此不会出现重复的情况

代码实现:

class Solution {public int fib(int n) {if(n <= 0){        //判断若n=0,直接返回0return 0;}int a = 0,b = 1,sum = 0;for(int i = 0;i < n;i++){sum = (a + b) % 1000000007; //循环取模a = b;b = sum;            //sum相当于存不断累加的结果} return sum;}
}
补充说明:

为什么res要模1000000007?

     

 因为这个数字是10位的最小质数,上面的代码并没有问题,只是数字太大会造成溢出,需要将计算结果 % 1000000007才能保证得出的结果在int 范围中

代码(优化):

public int fib(int n) {int a=0, b=1,sum=0;// 当n>1时才会进入循环,所以for循环算的是n从2到n+1的值for(int i=2; i<=n+1; i++){sum=(a+b) % 1000000007;        a=b;b=sum;  }// 由于多算一次,所以返回的是a,不是breturn a;}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何从零开始制作一本企业宣传画册?

最近公司领导要求为公司制作一本企业宣传画册&#xff0c;用来展示我们的产品和服务&#xff0c;增加品牌影响力。可是&#xff0c;像我这种零基础的小白&#xff0c;完全不知道如何制作啊&#xff1f;对此我感到很焦虑&#xff0c;怕做不好影响公司形象&#xff0c;也怕耽误时…

el-tree结合el-switch实现状态切换

<template><div><el-col :span"24"><el-card class"tree-card"><div class"sketch_content selectFile"><span class"span_title">组织列表 </span><div style"display: flex; jus…

数据结构与算法编程题5

从有序表中删除重复元素&#xff0c;使表中所有元素值均不相同。 #include <iostream> using namespace std;typedef int ElemType; #define Maxsize 100 #define OK 1 #define ERROR 0 typedef struct SqList {ElemType data[Maxsize];int length; }SqList;void Init_…

武汉凯迪正大KDHG-220P互感器综合测试仪

主要特点 武汉凯迪正大KDHG-220P互感器综合测试仪&#xff0c;仅需进行简单的数字设定&#xff1a;设定互感器的额定参数。仪器将全过程自动记录数据&#xff0c;并自动将变比极性、伏安特性曲线等计算并显示出来&#xff0c;省去换线、手动调压、人工记录、整理、描曲线等烦琐…

mysqlbinlog使用记录

首先要确认mysql启用了binlog功能。一般默认启用。 mysql> select log_bin; ----------- | log_bin | ----------- | 1 | ----------- 然后确认binlog目录 mysql> select log_bin_basename; ---------------------------- | log_bin_basename | -----…

文件加密软件哪个好丨2023年最值得收藏的6款文件加密软件

文件加密软件哪个好&#xff1f; 在这个安全事件频发的时代&#xff0c;信息安全、文件安全已成为很多人关注的话题。不管是电脑还是手机&#xff0c;都需要重视文件加密这个话题。 那今天就推荐6款最值得收藏的文件加密软件&#xff0c;并分析其中的优缺点。 一、电脑加密软…

【原创】CentOS7.9解决mdadm组raid阵列后resync非常慢的问题

前言 前几日我买了4块16TB的硬盘使用mdadm组了一个raid10阵列&#xff0c;具体如何搭建的可以看我之前的博客。 【报错记录】疯狂踩坑之RockyLinux创建Raid1镜像分区&#xff0c;Raid分区在重启后消失了&#xff01;外加华硕主板使用Raid模式后&#xff0c;硬盘在系统中无法找…

微信小程序配置企业微信的在线客服

配置企业微信后台 代码实现 <button tap"openCustomerServiceChat">打开企业微信客服</button>methods: {openCustomerServiceChat(){wx.openCustomerServiceChat({extInfo: {url: 你刚才的客服地址},corpId: 企业微信的id,showMessageCard: true,});} …

多域名SSL证书的优势

当今数字化时代&#xff0c;网站拥有一个或多个域名是非常常见的。多域名SSL证书在这样的情境下变得至关重要。它为拥有多个域名的网站提供了全面的安全性和灵活性&#xff0c;为其提供了诸多优势。 多域名SSL证书是一种单个证书&#xff0c;可以为一个域名、多个域名&#xff…

005 OpenCV直方图

目录 一、环境 二、直方图原理概述 三、代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、直方图原理概述 OpenCV是一个广泛使用的开源计算机视觉库&#xff0c;它提供了许多用于图像处理和分析的函数和算法。其中&#xff…

单链表相关面试题--1.删除链表中等于给定值 val 的所有节点

/* 解题思路&#xff1a;从头节点开始进行元素删除&#xff0c;每删除一个元素&#xff0c;需要重新链接节点 */ struct ListNode* removeElements(struct ListNode* head, int val) {if(head NULL)return NULL;struct ListNode* cur head;struct ListNode* prev NULL;while…

1.并发编程基础

目录 概述线程和进程并发和并行线程上下文切换线程的一生wait与sleep的区别 结束 概述 线程和进程 进程&#xff1a;是指内存运行的一个应用程序&#xff0c;是系统运行程序的基本单位&#xff0c;是程序的一次执行过程线程&#xff1a;是进程中的一个执行单元&#xff0c;负…