剑指offer-斐波那契数列

10 篇文章 0 订阅
5 篇文章 0 订阅

刷题笔记

	不知不觉中走到了研二,恍惚之间好像还记得研一入学的场景,提着拉杆箱去学院帐篷那里报到,不对 ,
应该恍惚之间还记得本科时候入学场景,提着拉杆箱去学院帐篷那里报到。哎,那么多年过去了 ,
感觉还是碌碌无为。
	准备一下来年的春招吧,重拾一下数据结构和算法。准备刷题,LeetCode和剑指offer,这里就当是个笔记本吧!

剑指offerJZ7添加链接描述

给定一个正整数n,问第n个斐波那契数列是多少(第0个是0,第一个是1)?

首先斐波那契数列的定义是f(n+1)=f(n)+f(n−1),生成第n项的方式有以下几种:

1字典法
常规解法都是递归或者贪心算法,好像用贪心会简单点,但还没学会贪心算法,太菜了。
就用字典去做这个题 ,也能做出来,
**思路**:用一个字典去存储斐波那契的前两个数据,然后从第3个开始,每一个数据都是前两个数据的相加,
这样可以减少递归算法的多次重复运算
最后为了防止数据太大,导致越界,可对数据取余
class Solution:
    def fib(self, n: int) -> int:
        
        dic={}
        for i in range(2):
            dic[i]=i

        if n<=1:
            return dic[n]
        else:
            for i in range(2,n+1):
                dic[i]=dic[i-1]+dic[i-2]
            return dic[i]%1000000007
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值