LeetCode_509.斐波那契数
LeetCode-cn_509
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
给定 N,计算 F(N)。
示例 1:
输入:2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1.
示例 2:
输入:3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2.
示例 3:
输入:4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3.
提示:
0 ≤ N ≤ 30
方法一:递归方法题解
- 测试用例:31(0~30)
 - 执行用时:18ms
 - 内存消耗:33.4MB
 
class Solution {
    public int fib(int N) {
        if (N < 2) return N;
        return fib(N-1) + fib(N-2);
    }
}
方法二:动态编程方法题解
- 测试用例:31(0~30)
 - 执行用时:1ms
 - 内存消耗:33.8MB
 
class Solution {
    public int fib(int N) {
        if (N < 2) return N;
        int[] fib = new int[N+1];
        fib[0] = 0;
        fib[1] = 1;
        for (int i = 2; i <= N; i++) {
            fib[i] = fib[i-1] + fib[i-2];
        }
        return fib[N];
    }
}
方法三:矩阵幂方法题解
- 测试用例:31(0~30)
 - 执行用时:1ms
 - 内存消耗:33.5MB
 
class Solution {
    public int fib(int N) {
        if (N < 2) return N;
		int F[][] = new int[][] { { 1, 1 }, { 1, 0 } };
		power(F, N - 1);
		return F[0][0];
    }
    void power(int F[][], int N) {
		int M[][] = new int[][] { { 1, 1 }, { 1, 0 } };
		for (int i = 2; i <= N; i++) {
			mutiply(F, M);
		}
	}
    void mutiply(int F[][], int M[][]) {
		int x = F[0][0] * M[0][0] + F[0][1] * M[1][0];
		int y = F[0][0] * M[0][1] + F[0][1] * M[1][1];
		int z = F[1][0] * M[0][0] + F[1][1] * M[1][0];
		int w = F[1][0] * M[0][1] + F[1][1] * M[1][1];
		F[0][0] = x;
		F[0][1] = y;
		F[1][0] = z;
		F[1][1] = w;
	}
}
方法四:优化空间复杂度为 O(1) 题解
- 测试用例:31(0~30)
 - 执行用时:0ms
 - 内存消耗:33.3MB
 
class Solution {
    public int fib(int N) {
        if (N < 2) return N;
        int a = 0, b = 1, c;
        for (int i = 2; i <= N; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return b;
    }
}
												
											LeetCode_509.斐波那契数的更多相关文章
- 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]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...
 - 斐波那契数[XDU1049]
		
Problem 1049 - 斐波那契数 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 1673 Ac ...
 - 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 …… ...
 - Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数
		
Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...
 - DP:斐波纳契数
		
题目:输出第 n 个斐波纳契数(Fibonacci) 方法一.简单递归 这个就不说了,小n怡情,大n伤身啊……当n=40的时候,就明显感觉到卡了,不是一般的慢. //输出第n个 Fibonacci 数 ...
 - HDU4549 M斐波那契数
		
M斐波那契数列 题目分析: M斐波那契数列F[n]是一种整数数列,它的定义例如以下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 如今给 ...
 - HDU 5914 Triangle(打表——斐波那契数的应用)
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whos ...
 - [Swift]LeetCode509. 斐波那契数 | Fibonacci Number
		
The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...
 - HDU 1021(斐波那契数与因子3 **)
		
题意是说在给定的一种满足每一项等于前两项之和的数列中,判断第 n 项的数字是否为 3 的倍数. 斐波那契数在到第四十多位的时候就会超出 int 存储范围,但是题目问的是是否为 3 的倍数,也就是模 3 ...
 
随机推荐
- 6.jQuery之类操作不影响原先类,but原生js却是会影响
			
注意jQuery和js的区别: <style> .one { width: 200px; height: 200px; background-color: pink; transition ...
 - 微信小程序实现滑动删除效果
			
在一些app中,随处可见左滑动的效果,在微信小程序中,官方并未提供相关组件,需要我们自己动手写一个类似的效果 下面仅列举出核心代码,具体的优化需要根据你自身的需求 <view class='li ...
 - ArcGIS 在VS2010中 ESRI.ArcGIS.SOESupport.dll 无法正常加载的处理
			
转自 http://blog.csdn.net/tnt123688/article/details/23186973 问题描述: 打开ArcGIS的SOE模板后,提示 错误 命名空间“ESRI.A ...
 - 运维LVS-NAT模式理解
			
一.LVS-NAT模式的工作原理这个是通过网络地址转换的方法来实现调度的.首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个 后端的真实服务器(RS ...
 - js实现简单进度条
			
主要用到的 offsetWidth 属性,定时器. <!DOCTYPE html> <html> 3 <head> <meta http-equiv=&quo ...
 - 常用插件html
			
1.上传模板,插件 https://github.com/kartik-v/bootstrap-fileinput 2.
 - winmm.dll包含函数
			
DLL 文件: winmm 或者 winmm.dll DLL 名称: Windows Multimedia API 描述: winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游 ...
 - eddx
			
eddx是亿图绘图文件,可以使用EdrawSoft Edraw Max软件打开.这是一款流程图绘图软件,它内置丰富的预定义模板和例子,可以创建各种图示.包括商务绘图.工程及科学绘图.思维导图和数据库. ...
 - Luogu P2619 [国家集训队2]Tree I  凸优化,wqs二分
			
新学的科技.设\(f(x)\)为选\(x\)条白色边的时候的最小生成树权值和,那么可以猜到它应该是一个下凸函数的形式. 如图,图中\(x\)坐标表示选的白色边条数,\(y\)坐标表示获得的权值,那么我 ...
 - XGboost数据比赛实战之调参篇(完整流程)
			
这一篇博客的内容是在上一篇博客Scikit中的特征选择,XGboost进行回归预测,模型优化的实战的基础上进行调参优化的,所以在阅读本篇博客之前,请先移步看一下上一篇文章. 我前面所做的工作基本都是关 ...