标签(空格分隔): LeetCode
题目地址:https://www.nowcoder.com/ta/coding-interviews
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
Ways
直接递归解法由于有很多的重复计算,因此会超时。
所以可以使用字典保存计算过了的数字,省去了重复的计算,速度很快。
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.keep = {0:0, 1:1}
def Fibonacci(self, n):
if n in self.keep:
return self.keep[n]
else:
fn = self.Fibonacci(n - 1) + self.Fibonacci(n - 2)
self.keep[n] = fn
return fn
如果不使用递归,而是直接使用前两个数字的和相加得到第三个数字的方式能把时间复杂度降到O(n)。
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
a,b = 0,1
for i in range(n):
a,b = b,a+b
return a
Date
2018 年 3 月 9 日