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