The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0 and 1. That is,

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

Given N, calculate F(N).

Example 1:            Input: 2            Output: 1                 Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.

Example 2:            Input: 3            Output: 2                 Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.

Example 3:            Input: 4            Output: 3                 Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.

Note:                0 ≤ N ≤ 30.

解决思路: 这道题最简单的思路就是直接使用递归进行解决(从给定值往小计算),但是递归的过程存在很多重复计算。当题中N给的很大时,计算时间会加长。 因此采用从小到大的方式进行计算。

  如果使用递归,则步骤图如下:

                     

  可以看到,有很多节点的值被重复计算了。

  而如果从小到大步骤如下:(不会产生的多余的计算)

                 

  解决代码如下:时间复杂度为O(n), 空间复杂度为O(1)

 class Solution(object):
def fib(self, N):
"""
:type N: int
:rtype: int
"""
if N < :
return
if N == or N == : # 当N为1 or 时, 直接返回。
return if N == else
one, two = ,
for i in range(N-): # 进行计算
one, two = two, one+two
return two

【LeetCode每天一题】Fibonacci Number(斐波那契数列)的更多相关文章

  1. 509. Fibonacci Number斐波那契数列

    网址:https://leetcode.com/problems/fibonacci-number/ 原始的斐波那契数列 运用自底向上的动态规划最佳! 可以定义vector数组,但是占用较多内存空间 ...

  2. 10、end关键字和Fibonacci series: 斐波纳契数列

    # Fibonacci series: 斐波纳契数列 # 两个元素的总和确定了下一个数 a, b = 0, 1 #复合赋值表达式,a,b同时赋值0和1 while b < 10: print(b ...

  3. [LeetCode] Fibonacci Number 斐波那契数字

    The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...

  4. 【每天一题ACM】 斐波那契数列(Fibonacci sequence)的实现

    最近因为一些原因需要接触一些ACM的东西,想想写个blog当作笔记吧!同时也给有需要的人一些参考 话不多说,关于斐波那契数列(Fibonacci sequence)不了解的同学可以看看百度百科之类的, ...

  5. [Amazon] Program for Fibonacci numbers 斐波那契数列

    The Fibonacci numbers are the numbers in the following integer sequence. 0, 1, 1, 2, 3, 5, 8, 13, 21 ...

  6. Fibonacci series(斐波纳契数列)的几种常见实现方式

    费波那契数列的定义: 费波那契数列(意大利语:Successione di Fibonacci),又译费波拿契数.斐波那契数列.斐波那契数列.黄金切割数列. 在数学上,费波那契数列是以递归的方法来定义 ...

  7. 【算法】Fibonacci(斐波那契数列)相关问题

    一.列出Fibonacci数列的前N个数 using System; using System.Collections.Generic; using System.Linq; using System ...

  8. Computational Complexity of Fibonacci Sequence / 斐波那契数列的时空复杂度

    Fibonacci Sequence 维基百科 \(F(n) = F(n-1)+F(n-2)\),其中 \(F(0)=0, F(1)=1\),即该数列由 0 和 1 开始,之后的数字由相邻的前两项相加 ...

  9. hdu number number number 斐波那契数列 思维

    http://acm.hdu.edu.cn/showproblem.php?pid=6198 F0=0,F1=1的斐波那契数列. 给定K,问最小的不能被k个数组合而成的数是什么. 赛后才突然醒悟,只要 ...

随机推荐

  1. day_4.30 py

    2018-4-30 13:02:32 ''' 多态:只有当调用方法的时候才知道调用父类 还是子类的方法(随变化而变化,等到真正实行的时候才知道结果) 面向对象三个特点: 封装 继承 多态 ''' cl ...

  2. MyISAM和InnoDB区别 及选择

    MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以 ...

  3. plsql developer 安装

    PLSQL Developer 安装分以下几步: 一.下载Oracle客户端 PLSQL Developer是通过oracle client连上Oracle server的. http://www.o ...

  4. Hive:解决Hive创建文件数过多的问题

    今天将临时表里面的数据按照天分区插入到线上的表中去,出现了Hive创建的文件数大于100000个的情况,我的SQL如下: hive> insert overwrite table test pa ...

  5. iOS10原生的语音转文字功能

    #import <Foundation/Foundation.h> #import <Speech/Speech.h> @interface SpeechListener : ...

  6. OPTIMIZE TABLE linked list 表优化原理 链表数据结构 空间再利用

    小结: 1.加快读写: 2.对于InnoDB表,在一定条件下,通过复制旧表重建: 3.实践中, 3.1.show processlist;查看线程,发现,认为堵塞读请求: 3.2.数据长度空间不变,索 ...

  7. 原码,补码,反码的概念及Java中使用那种存储方式

    原码,补码,反码的概念及Java中使用那种存储方式: 原码:原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示 补码:机器数的补码可由原码得到.如果机器 ...

  8. 玩具装箱&土地购买

    今天一天8h 写了两道斜率优化的题(别问我效率为什么这么低 代码bug太多了) 关键是思考的不周全 估计是写的题少手生 以后就会熟练起来了吧. 这道题显然有一个n^2的dp方程 设f[i]表示前i件物 ...

  9. 【Linux】Linux 常用命令汇总

    查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpk ...

  10. 转:eclipse maven build、maven install 等区别

    原文地址:eclipse maven build.maven install 等区别