LeetCode-cn_509

  1. 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
  2. F(0) = 0,   F(1) = 1
  3. F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
  4. 给定 N,计算 F(N)。

示例 1:

  1. 输入:2
  2. 输出:1
  3. 解释:F(2) = F(1) + F(0) = 1 + 0 = 1.

示例 2:

  1. 输入:3
  2. 输出:2
  3. 解释:F(3) = F(2) + F(1) = 1 + 1 = 2.

示例 3:

  1. 输入:4
  2. 输出:3
  3. 解释:F(4) = F(3) + F(2) = 2 + 1 = 3.

提示:

  1. 0 N 30

方法一:递归方法题解

  • 测试用例:31(0~30)
  • 执行用时:18ms
  • 内存消耗:33.4MB
  1. class Solution {
  2. public int fib(int N) {
  3. if (N < 2) return N;
  4. return fib(N-1) + fib(N-2);
  5. }
  6. }

方法二:动态编程方法题解

  • 测试用例:31(0~30)
  • 执行用时:1ms
  • 内存消耗:33.8MB
  1. class Solution {
  2. public int fib(int N) {
  3. if (N < 2) return N;
  4. int[] fib = new int[N+1];
  5. fib[0] = 0;
  6. fib[1] = 1;
  7. for (int i = 2; i <= N; i++) {
  8. fib[i] = fib[i-1] + fib[i-2];
  9. }
  10. return fib[N];
  11. }
  12. }

方法三:矩阵幂方法题解

  • 测试用例:31(0~30)
  • 执行用时:1ms
  • 内存消耗:33.5MB
  1. class Solution {
  2. public int fib(int N) {
  3. if (N < 2) return N;
  4. int F[][] = new int[][] { { 1, 1 }, { 1, 0 } };
  5. power(F, N - 1);
  6. return F[0][0];
  7. }
  8. void power(int F[][], int N) {
  9. int M[][] = new int[][] { { 1, 1 }, { 1, 0 } };
  10. for (int i = 2; i <= N; i++) {
  11. mutiply(F, M);
  12. }
  13. }
  14. void mutiply(int F[][], int M[][]) {
  15. int x = F[0][0] * M[0][0] + F[0][1] * M[1][0];
  16. int y = F[0][0] * M[0][1] + F[0][1] * M[1][1];
  17. int z = F[1][0] * M[0][0] + F[1][1] * M[1][0];
  18. int w = F[1][0] * M[0][1] + F[1][1] * M[1][1];
  19. F[0][0] = x;
  20. F[0][1] = y;
  21. F[1][0] = z;
  22. F[1][1] = w;
  23. }
  24. }

方法四:优化空间复杂度为 O(1) 题解

  • 测试用例:31(0~30)
  • 执行用时:0ms
  • 内存消耗:33.3MB
  1. class Solution {
  2. public int fib(int N) {
  3. if (N < 2) return N;
  4. int a = 0, b = 1, c;
  5. for (int i = 2; i <= N; i++) {
  6. c = a + b;
  7. a = b;
  8. b = c;
  9. }
  10. return b;
  11. }
  12. }

LeetCode_509.斐波那契数的更多相关文章

  1. UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数

    大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...

  2. 斐波那契数[XDU1049]

    Problem 1049 - 斐波那契数 Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 1673  Ac ...

  3. C++求斐波那契数

    题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...

  4. Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数

    Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...

  5. DP:斐波纳契数

    题目:输出第 n 个斐波纳契数(Fibonacci) 方法一.简单递归 这个就不说了,小n怡情,大n伤身啊……当n=40的时候,就明显感觉到卡了,不是一般的慢. //输出第n个 Fibonacci 数 ...

  6. HDU4549 M斐波那契数

    M斐波那契数列 题目分析: M斐波那契数列F[n]是一种整数数列,它的定义例如以下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 如今给 ...

  7. HDU 5914 Triangle(打表——斐波那契数的应用)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whos ...

  8. [Swift]LeetCode509. 斐波那契数 | Fibonacci Number

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

  9. HDU 1021(斐波那契数与因子3 **)

    题意是说在给定的一种满足每一项等于前两项之和的数列中,判断第 n 项的数字是否为 3 的倍数. 斐波那契数在到第四十多位的时候就会超出 int 存储范围,但是题目问的是是否为 3 的倍数,也就是模 3 ...

随机推荐

  1. [JavaScript] es6规则总结

    let 和 const let 是块级作用域 let 声明的变量只在其所在的作用域内生效 <script> { var today = "周3"; let yester ...

  2. 剑指offer-数值的整数次方-调整数组顺序使奇数位于偶数前面-代码的完整性-python

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   保证base和exponent不同时为0   思路 求base的expon ...

  3. 关于chrome请求被挂起页面加载缓慢问题的追查

    请参考FEX团队探究结果 http://fex.baidu.com/blog/2015/01/chrome-stalled-problem-resolving-process/ 结论如下: 请求成功构 ...

  4. 092、部署Graylog日志系统(2019-05-16 周四)

    参考https://www.cnblogs.com/CloudMan6/p/7808708.html   Graylog 是与 ELK 可以相提并论的一款几种式日志管理方案,支持数据收集.检索.可视化 ...

  5. SVM支持向量机(2)

    零.各种概念 1.硬间隔最大化   2.硬间隔支持向量机 3.线性支持向量机 软间隔最大化 软间隔支持向量机 4.非线性支持向量机 核函数kernel function 一.理解支持向量机SVM的原理 ...

  6. python变量、对象和引用你真的明白了吗

    python变量.对象和引用你真的明白了吗 变量.对象和引用 Python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值.对Python语言来讲,对象的类型和内存都是 ...

  7. MathType 7.4.2.480

    目录 1. 相关推荐 2. 按 3. 软件介绍 4. 安装步骤 5. 使用说明 6. 下载地址 1. 相关推荐 推荐使用:AxMath(AxMath可以与LaTeX进行交互):https://blog ...

  8. HMC版本支持

      Target Version Upgrade From Upgrade Instructions Updates Date Available End of Service Models supp ...

  9. java.lang.String (JDK 1.8)

    研究一个类之前我们来说说类的构成:              一个类主要分为几个部分:分别是类的定义(类的继承,接口的实现),全局变量方法,属性,内部类等. 第一点: 实现的接口 public fin ...

  10. Vue项目使用域名访问配置

    1. 编辑C:\Windows\System32\drivers\etc文件夹中的hosts文件,在末尾添加127.0.0.1 www.local.com(你的自定义域名) 注意:如果该文件夹没有ho ...