《剑指offer》(七)-斐波那契数列(java)

2019-11-11  本文已影响0人  鼠小倩

斐波那契数列

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39

代码格式要求

public class Solution {
    public int Fibonacci(int n) {
        
    }
}

解题一直接运用公式

1.思路


image.png

2.代码

public class Solution7 {
    public int Fibonacci(int n) {
        if(n<=1) {
            return n;
        }
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
}
  1. 复杂度
    时间复杂度:O(2^n)
    空间复杂度:O(1)

解题二-利用数组

1.代码

public class Solution7 {
    public int Fibonacci(int n) {
        int[] fib=new int[40];
        fib[0]=0;
        fib[1]=1;
        for(int i=0;i<n;i++) {
            fib[i]=fib[i-1]+fib[i-2];
        }
        return fib[n];
    }
}
  1. 复杂度
    时间复杂度:O(2^n)
    空间复杂度:O(1)

解题三-用变量代替

1.思路
我们可以发现每次就用到了最近的两个数,所以我们可以只存储最近的两个数

2.代码

public class Solution7 {
    public int Fibonacci(int n) {
        if(n<=1) {
            return n;
        }
        int cur=0;
        int pre1=1;
        int pre2=0;
        for(int i=2;i<=n;i++) {
            cur=pre1+pre2;
            pre2=pre1;
            pre1=cur;
        }
        return cur;
    }
}
  1. 复杂度:
    时间复杂度:O(n)
    空间复杂度:O(1)
上一篇 下一篇

猜你喜欢

热点阅读