剑指offer_斐波那契数列
package solution;
public class Fibonacci {
/*
* f(n) = f(n-1) + f(n-2) n>1
* f(0) = 0
* f(1) = 1
* */
public static void main(String[] args) {
System.out.println(Fibonacci(3));
}
public static int Fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
}
int[] a = new int[n + 1];
a[0] = 0;
a[1] = 1;
for (int i = 2; i <= n; i++) {
a[i] = a[i - 1] + a[i - 2];
}
return a[n];
}
public static int Fibonacci_2(int n) {
if (n == 0 || n == 1) {
return n;
}
int fibNMinusOne = 1;
int fibNMinusTwo = 0;
int fibN = 0; //不用数组保存可以节约空间
for (int i = 2; i <= n; i++) {
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusOne = fibN;
fibNMinusTwo = fibNMinusOne;
}
return fibN;
}
}
剑指offer_斐波那契数列的更多相关文章
- 剑指offer7: 斐波那契数列第n项(从0开始,第0项为0)
1. 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2. 思路和方法 斐波那契数列(Fibonacci sequen ...
- 剑指Offer 斐波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 思路: 不考虑递归 用递推的思路 AC代码: class Solution { public ...
- 剑指Offer——斐波那契数列
题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 分析: 递归解法肯定相当耗时. 因为当n=4时,程序是这样子递归运算的:Fibonacci( ...
- 剑指offer--4.斐波那契数列
int最大范围(有符号情况下,从第0项0开始)能取到第46项1836311903,47项溢出 时间限制:1秒 空间限制:32768K 热度指数:473928 题目描述 大家都知道斐波那契数列,现在要求 ...
- 剑指Offer-7.斐波那契数列(C++/Java)
题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 分析: 斐波那契数列是0,1,1,2,3,5,8,13...也就是当前 ...
- 用js刷剑指offer(斐波那契数列)
牛客网链接 下面介绍一下什么是斐波那契数列 js代码 知道了通项公式,那代码就非常简单了 function Fibonacci(n) { // write code here let pre = 1 ...
- 剑指Offer07 斐波那契数列
/************************************************************************* > File Name: 07_Fibona ...
- [剑指OFFER] 斐波那契数列- 跳台阶 变态跳台阶 矩形覆盖
跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloor(int number) ...
- [剑指Offer]10-斐波那契数列(循环)-Java
题解 使用循环,时间复杂度O(n). 相关 跳台阶:f(n)=f(n-1)+f(n-2) 变态跳台阶:f(n)=2*f(n-1) 矩形覆盖:f(n)=f(n-1)+f(n-2) 全部用循环代替递归,使 ...
随机推荐
- 【leetcode】1289. Minimum Falling Path Sum II
题目如下: Given a square grid of integers arr, a falling path with non-zero shifts is a choice of exactl ...
- JavaScript数组的简单介绍
㈠对象分类 ⑴内建对象 ⑵宿主对象 ⑶自定义对象 ㈡数组(Array) ⑴简单介绍 ①数组也是一个对象 ②它和我们普通对象功能类似,也是用来存储一些值的 ③不同的是普通对象是使用字符串作为属性名的 ...
- H5页面测试总结
前言 在最近几个项目中,小编接触了较多关于H5页面的测试,H5页面的测试除了业务逻辑功能测试外,其他部分的测试方法基本是可以通用的,在此对H5页面的一些通用测试方法进行总结分享给大家. H5页面介绍 ...
- end()
end() V1.0概述 回到最近的一个"破坏性"操作之前.即,将匹配的元素列表变为前一次的状态. 如果之前没有破坏性操作,则返回一个空集.所谓的"破坏性"就是 ...
- luogu 1156 垃圾陷阱 动态规划
Code: #include <bits/stdc++.h> #define N 4004 #define setIO(s) freopen(s".in"," ...
- linux上安装nginx详细步骤
一.安装依赖包 yum install gcc gcc-c++ pcre-devel patch libffi-devel python-devel zlib-devel bzip2-devel op ...
- bzoj5457
城市 HYSBZ - 5457 有n座城市,m个民族.这些城市之间由n-1条道路连接形成了以城市1为根的有根树.每个城市都是某一民族的聚居 地,Master知道第i个城市的民族是A_i,人数是B_i. ...
- Hdu 5248
hdu5248-序列变换 题意: 给你一个序列A,要求改变序列A中的某些元素的顺序,形成一个新的数列B,并保证数列B严格单调递增,求出最小代价. 代价计算公式 $ cost(a,b)=max(|A_i ...
- AT3576 Popping Balls
AT3576 Popping Balls 好题!一种以前没怎么见过的思路! %%ywy 以什么方式,什么位置统计本质不同的方案,才能不重不漏是处理所有计数问题的主心骨. 本题难以容斥.难以DP. 所以 ...
- 使用io/ioutil进行读写文件
读文件: package main import ( "fmt" "io/ioutil" ) func main() { b, err := ioutil.Re ...