c语言斐波那契数列_剑指Offer-10-I.斐波那契数列

6fe6c195a00e7b4ee69f3a64f56d0e6d.png

题目

题目描述

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例1

输入:n = 2输出:1

示例2

输入:n = 5输出:5

题解

递归

把f(n) 拆解 为f(n-1)和f(n-2)递归计算,以f(1)和f(0)为终止条件。
大量重复递归计算,会直接超时。时间复杂度:O($2^n$)空间复杂度:O(n)
class Solution:def fib(self, n: int) -> int:if n <= 0:return nreturn self.fib(n-1) + self.fib(n-2)

动态规划

  • 状态定义:dp为一维数组,dp[i]为斐波那契数列的第i个值。
  • 转移方程:dp[i] = dp[i-1] + dp[i-2]。
  • 初始状态:dp[0] = 0, dp[1] = 1。
时间复杂度:O(n),循环n次,每次O(1)。空间复杂度:O(n),dp[n]占用O(n)。
class Solution:def fib(self, n: int) -> int:if n <= 0:return ndp = []dp.append(0)dp.append(1)for i in range(2, n+1):dp_tmp = (dp[i-1] + dp[i-2]) % 1000000007dp.append(dp_tmp)return dp[n]

动态规划(空间优化)

利用 辅助变量使a, b 交替前进,节省了dp[]列表空间。 时间复杂度:O(n),循环n次,每次O(1)。空间复杂度:O(1),变量占用O(1)。
class Solution:def fib(self, n: int) -> int:a, b = 0, 1for _ in range(n):a, b = b, a + breturn a % 1000000007

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

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

相关文章

mysql 导入 mssql_MySQL(csv,text)导入mssql使用方法

MySQL(csv,text)导入mssql是非常的简单了但是在导入过程中会碰到text字段问题了&#xff0c;下面我们就来看一篇关于MySQL(csv,text)导入mssql使用方法吧&#xff0c;具体的操作细节如下所示。分两步处理&#xff0c;第一步是将csv导入到mysql。没有使用mssql自带客户端的导入功…

c# mvvm模式获取当前窗口_AWTK-MVVM 介绍

MVVM(Model-View-ViewModel)介绍8.1 分离用户界面和业务逻辑在开发应用程序时&#xff0c;要把用户界面和业务逻辑分离开来&#xff0c;这是每个程序员都知道的常识。分离用户界面和业务逻辑有几个重要的好处&#xff1a;有利于隔离变化。用户界面是最容易变化的&#xff0c;易…

【spring cloud】(三)服务降级——Hystrix

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的spring cloud专栏&#xff0c;在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;服务…

mysql高级查询教程_MYSQL高级查询

实际开发中&#xff0c;经常需要对某些数据进行统计&#xff0c;比如&#xff0c;统计某个字段的最大值、最小值、平均值等。MySQL中&#xff0c;提供了一些函数来实现这些功能聚合函数COUNT()——返回某列的行数SUM()——返回某列值的和AVG()——返回某列的平均值MAX()——返回…

【dubbo】(一) dubbo是什么?

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的dubbo专栏&#xff0c;在这个系列专栏中我对B站尚硅谷雷神的dubbo教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;dubbo知识点速览&a…

axios安装_Vue脚手架安装,与基本语法(干货)

首先&#xff0c;这篇Vue文章是为了下一篇我整合springbootvue前后分离的小demo&#xff0c;这两天整理好会上传哈哈1. Node.js安装1.1 下载安装在node.js 官网下载&#xff0c; 根据自己电脑系统安装&#xff0c;一直点下一步即可1.2 测试安装是否成功WindowsR打开cmd窗口&…

mysql port range_MySQL 数据库常见调优方法及参数设置_MySQL

1. 关闭 SELinuxvim /etc/selinux/config 更改 SELINUXenforcing 为 SELINUXdisabled2. 更改 IO Schedule, 对于 SSD 硬盘无需更改echo deadline > /sys/block/sda/queue/scheduler3. 更改 ulimitvim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535roo…

base64 能放数组里面么_数组:总结篇

我们做个总结吧数组理论基础数组是非常基础的数据结构&#xff0c;在面试中&#xff0c;考察数组的题目一般在思维上都不难&#xff0c;主要是考察对代码的掌控能力也就是说&#xff0c;想法很简单&#xff0c;但实现起来 可能就不是那么回事了。首先要知道数组在内存中的存储方…

xampp mysql 卸载_卸载Xampp并安装apache + mysql + php 过程

首先是卸载xampp&#xff0c;打开xampp-control.exe 控制面板&#xff0c;停止apache和mysql服务。如果你是安装版xampp&#xff0c;可以到如果不是则安装如下方法。停止服务之后。就需要卸载服务。打开cmd&#xff0c;用sc.exe这个Windows命令开始——运行——cmd.exe&#xf…

python判断正确错误_python错误和异常

Python3 错误和异常 作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xff08;断言&…

nodejs mysql 返回json_python向mysql中存储JSON及Nodejs取出

虽然把JSON数据存入mysql也是比较蛋疼&#xff0c;但是相比使用Nodejs嵌套处理多个mysql查询并拼接返回数据也算是没mongo时的一个折中方案了。我使用python拼接了一个json格式的字符串&#xff0c;却遇到了一些问题1&#xff0c;如果把json数据转成str存入&#xff0c;那么nod…

17个常用经典数据可视化图表与冷门图表

数据可视化是创建信息图形表示的过程。随着可视化技术的飞速发展&#xff0c;可以利用强大的可视化工具选择合适的数据可视化图表来展示数据。以下专业人士都应该知道的一些最重要的数据可视化图表。 常见数据可视化图表 饼图 饼图是最常见和最基本的数据可视化图表之一。饼图…

python keyerror_盘点Python 初学者最容易犯的10大错误!你中招了吗?

对于新手&#xff0c;初学Python时&#xff0c;总会遇到这样那样的报错&#xff0c;想要弄懂Python错误信息的含义可能还不知道怎么做&#xff0c;这里列出了一些比较常见的Python报错问题&#xff0c;希望对于学习Python的人能够有些帮助。发现有很多想要学习Python却不知道如…

mysql index sub part_mysql中的key和index 理解

mysql的key和index多少有点令人迷惑&#xff0c;这实际上考察对数据库体系结构的了解的。1 key 是数据库的物理结构&#xff0c;它包含两层意义&#xff0c;一是约束(偏重于约束和规范数据库的结构完整性)&#xff0c;二是索引(辅助查询用的)。包括primary key, unique key, fo…

【spring cloud】(六)消息总线——springcloud Bus

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的spring cloud专栏&#xff0c;在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Bus…

python快速排序代码_Python实现快速排序算法

原标题&#xff1a;Python实现快速排序算法 Python实现快速排序算法 快速排序算法是一种基于交换的高效的排序算法&#xff0c;由C.R.A.Hoare于1962年提出&#xff0c;是一种划分交换排序。它采用了一种分治的策略&#xff0c;通常称其为分治法(Divide and conquer algorithm)。…

docker mysql 生产环境_如何部署Docker MySQL生产环境?

1 前言Docker容器原则上是短暂的&#xff0c;如果容器被删除或损毁&#xff0c;数据或配置将丢失&#xff0c;所以上个章节部署的MySQL只适合于测试环境&#xff0c;由于生产的需求&#xff0c;本章将使用Docker卷机制持久保存Docker容器中创建的数据。2 最佳实践2.1 环境配置2…

kali 切换root权限_Ubuntu 被曝严重漏洞:切换系统语言 + 输入几行命令,就能获取 root 权限...

公众号关注 “GitHubDaily”设为 “星标”&#xff0c;带你了解技术圈内新鲜事&#xff01;来自量子位无需系统密码&#xff0c;就能添加新的 sudo 用户、获取 root 权限&#xff0c;事后还能删除不留痕迹。这是 GitHub 安全研究员 Kevin Backhouse 发现的一个 Ubuntu 系统大漏…

oracle定义变量sql赋值_ORACLE获取SQL绑定变量值的方法总结

本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法&#xff0c;在SQL优化调优过程中&#xff0c;经常会用到这方面的知识点。在此梳理、总结一下这方面的知识点&#xff0c;方面日后查找、翻阅。方法1&#xff1a;查询V$SQLV$SQL视图中的BIND_DATA字段用来存储绑定变量的…

transition css_Transition 过渡

1&#xff1a;基本概念在一定时间内平滑的过渡&#xff0c;也就是圆滑的以动画效果改变css的属性值。它的过渡可以由鼠标点击、焦点获取或者失去、被点击事件或对元素的改变中触发&#xff1b;不能主动触发&#xff0c;只能被动触发。常用的基本属性有&#xff1a;Transition-d…