4.每日LeetCode-数组类,斐波那契数(Go,Java,Python)

题目

题号:509斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。示例 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 1 1 2 3 5 8 13 21 斐波那契数列0 1 2 3 4 5 6 7  8 下标

解法

Go

package mainimport "fmt"// 使用递归,并用map保存已经求解过的值
func fib1(n int) int {mp := make(map[int]int, n-2)if n <= 1 {return n}if _, ok := mp[n]; ok {return mp[n]} else {rst := fib(n-1) + fib(n-2)mp[n] = rstreturn rst}
}// 使用for循环,用两个变量记录上次和上上次的值,时间复杂度O(n)
func fib(n int) int {if n <= 1 {return n}rst := 0pre := 1prepre := 0for i := 2; i <= n; i++ {rst = pre + prepreprepre = prepre = rst}return rst
}func main() {fmt.Println(fib(7))
}

Java

package org.example;import java.util.HashMap;
import java.util.Map;public class Fibonacci {// 使用递归,并用map保存已经求解过的值private Map<Integer, Integer> mp = new HashMap<>();public int fib1(int n) {if (n == 0) return 0;if (n == 1) return 1;if (mp.get(n) != null) {return mp.get(n);} else {int val = fib1(n - 1) + fib1(n - 2);mp.put(n, val);return val;}}// 使用for循环,用两个变量记录上次和上上次的值,时间复杂度O(n)public int fib(int n) {if (n == 0) return 0;if (n == 1) return 1;int sum = 0, pre = 1, prepre = 0;for (int i = 2; i <= n; i++) {sum = pre + prepre;prepre = pre;pre = sum;}return sum;}}

Python

dic = {}def fib(n):if n == 0:return 0if n == 1:return 1if n in dic:return dic[n]else:val = fib(n - 1) + fib(n - 2)dic[n] = valreturn val# 使用for循环,用两个变量记录上次和上上次的值,时间复杂度O(n)
def fib1(n):if n == 0:return 0if n == 1:return 1sum = 0pre = 1prepre = 0for i in range(2, n + 1):sum = pre + prepreprepre = prepre = sumreturn sumif __name__ == '__main__':print(fib(7))print(fib1(7))

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

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

相关文章

剖析【C++】——类与对象(上)超详解——小白篇

目录 1.面向过程和面向对象的初步认识 1.面向过程&#xff08;Procedural Programming&#xff09; 2.面向对象&#xff08;Object-Oriented Programming&#xff09; 概念&#xff1a; 特点&#xff1a; 总结 2.C 类的引入 1.从 C 语言的结构体到 C 的类 2.C 中的结构…

调用萨姆索诺夫函数:深入探索函数的参数与返回值

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、萨姆索诺夫函数的引入与调用 二、如何获取函数的返回值 三、无参数与无返回值的函数调…

帝国CMS验证码不显示怎么回事呢?

帝国CMS验证码有时候会不显示或打叉&#xff0c;总结自己的解决方法。 1、检查服务器是否开启GD库 测试GD库是否开启的方法&#xff1a;浏览器访问&#xff1a;/e/showkey/index.php&#xff0c;如果出现一堆乱码或报错&#xff0c;证明GD库没有开启&#xff0c;开启即可。 2…

聊聊2024上半年软考高项

今年和去年机考区别&#xff1a; 去年高项分了三个批次&#xff0c;其中有一部分人不是在周末考的试&#xff1b;今年分了两个批次&#xff0c;时间是25、26号&#xff1b;仍然是联考的形式。去年是综合知识在上午&#xff0c;案例分析和论文在下午&#xff1b;今年是综合知识…

[随笔] 在CSDN的6周年纪念日随笔

纪念 转眼已过6年&#xff0c;大一的时候学习编程&#xff0c;潜水 CSDN 学习各类博文&#xff0c;才学浅薄就没有主动写博文记录自己的学习历程。 过了段时间刚刚到了大二&#xff0c;很喜欢 Todolist&#xff0c;意气风发的写下《一份清爽的编程计划》&#xff0c;哈哈。 …

一文读懂npm i的命令以及作用

目录 1. 基本知识2. 常见用法 1. 基本知识 npm i 是 Node Package Manager (npm) 的一个命令&#xff0c;用于安装 Node.js 项目依赖的包 是 npm install 的简写形式&#xff0c;功能完全相同 详细解析 npm&#xff1a; npm 是 Node.js 的包管理工具&#xff0c;用于安装、共…

数据结构-队列(带图详解)

目录 队列的概念 画图理解队列 代码图理解 代码展示(注意这个队列是单链表的结构实现) Queue.h(队列结构) Queue.c(函数/API实现) main.c(测试文件) 队列的概念 队列&#xff08;Queue&#xff09;是一种基础的数据结构&#xff0c;它遵循先进先出&#xff08;First In …

二十八、openlayers官网示例Data Tiles解析——自定义绘制DataTile源数据

官网demo地址&#xff1a; https://openlayers.org/en/latest/examples/data-tiles.html 这篇示例讲解的是自定义加载DataTile源格式的数据。 先来看一下什么是DataTile&#xff0c;这个源是一个数组&#xff0c;与我们之前XYZ切片源有所不同。DataTile主要适用于需要动态生成…

经典面试题:MySQL如何调优?

目录 前言1. SQL查询优化2. 索引优化3. 表结构设计4. 硬件与配置优化5. 日常维护6. 性能测试与基准测试 前言 MySQL如何进行调优&#xff1f;这是面试中容易被问到的高频问题。 1. SQL查询优化 避免使用select* &#xff1a;只选取需要的列&#xff0c;减少数据传输量。使用…

Host头攻击-使用安全的Web服务器配置

Nginx配置示例 在Nginx中&#xff0c;你可以通过修改配置文件来验证HTTP Host头&#xff0c;确保它符合预期的值。以下是一个简单的配置示例&#xff1a; 1.添加HTTP Host头验证规则&#xff1a; 在Nginx的配置文件中&#xff0c;找到针对目标URL的相关配置块&#xff0c;并…

算法简单笔记2

5月26号&#xff0c;之前学了两天算法烦了&#xff0c;去学了几天鸿蒙&#xff0c;今天又回来看一下算法&#xff0c;距离6月1日国赛还有6天&#xff0c;哈哈真是等死咯...... 一、蓝桥杯第13届国赛第1题填空题&#xff1a;重合次数 &#xff08;半难不难&#xff0c;写编程难…

通过JavaScript本地存储数据

文章目录 本地存储本地存储分类 - localStorage本地存储分类 - sessionStorage存储复杂数据类型解决方法 本地存储 数据存储在用户浏览器中设置、读取方便、甚至页面刷新都不丢失数据容量较大&#xff0c;sessionStorage和localStorage约5M左右 本地存储分类 - localStorage …

探索演进:了解IPv4和IPv6之间的区别

探索演进&#xff1a;了解IPv4和IPv6之间的区别 在广阔的互联网领域中&#xff0c;设备之间的通信依赖于一组独特的协议来促进连接。前景协议中&#xff0c;IPv4&#xff08;Internet 协议版本 4&#xff09;和 IPv6&#xff08;Internet 协议版本 6&#xff09;是数字基础设施…

括号匹配数据结构

括号匹配是一种数据结构问题&#xff0c;用于检查给定的字符串中的括号是否匹配。例如&#xff0c;对于字符串 "((())())"&#xff0c;括号是匹配的&#xff0c;而对于字符串 "())("&#xff0c;括号是不匹配的。 常见的解决括号匹配问题的数据结构是栈。…

内存泄漏案例分享3-view的内存泄漏

案例3——view内存泄漏 前文提到&#xff0c;profile#Leaks视图无法展示非Activity、非Fragment的内存泄漏&#xff0c;换言之&#xff0c;除了Activity、Fragment的内存泄漏外&#xff0c;其他类的内存问题我们只能自己检索hprof文件查询了。 下面有一个极佳的view内存泄漏例子…

StringReader类,你学会了吗?

在 Java 编程中,StringReader 类是一个用于读取字符串的字符输入流。它可以将字符串转换为字符流,以便进行字符数据的读取和处理。 StringReader 类提供了一些便捷的方法,可以方便地从字符串中读取字符数据,并且具有良好的性能和可靠性。 本文将深入探讨 StringReader 类…

OrangePi AIpro开箱测评

OrangePi AIpro(8T) 香橙派联合华为精心打造&#xff0c;建设人工智能新生态 章节一&#xff1a;引言 1.1 背景 香橙派&#xff08;OrangePi&#xff09;是深圳市迅龙软件有限公司旗下开源产品品牌&#xff0c;迅龙软件成立于2005年&#xff0c;是全球领先的开源硬件和开源软…

初识C语言——第二十九天

数组 本章重点 1.一维数组的创建和初始化 数组的创建 注意事项&#xff1a; 1.一维由低数组在内存中是连续存放的&#xff01; 2.随着数组下标的增长&#xff0c;地址是由低到高变化的 2.二维数组的创建和初始化 注意事项&#xff1a; 1.二维数组在内存中也是连续存放的&am…

YOLOv8+PyQt5面部表情检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

1.资源包含可视化的面部表情检测系统&#xff0c;基于最新的YOLOv8训练的面部表情检测模型&#xff0c;和基于PyQt5制作的可视化面部表情检测系统&#xff0c;包含登陆页面、注册页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的八类面部表情&#xff1a…