剑指offer 7. 斐波那契数列 & leetcode 剑指 Offer 10- I. 斐波那契数列

7. 斐波那契数列

题目描述

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

n<=39

思路:

a , b , sum 三个数不断迭代

 1 class Solution {
 2     public int fib(int n) {
 3         if(n == 0 || n == 1){   // 边界值
 4             return n;
 5         }
 6         int a = 1, b = 0, sum = 0;  // 进入迭代
 7         for(int i = 2; i <= n; i++){
 8             sum = (a + b) % 1000000007;
 9             b = a;
10             a = sum;
11         }
12         return sum;
13     }
14 }

leetcode运行时间为0ms - 100%, 空间为35.4MB - 79.87%

复杂度分析:

时间复杂度:O(n)

空间复杂度:O(1)

大佬的简化写法

 1 class Solution {
 2     public int fib(int n) {
 3         
 4         int a = 0, b = 1, sum = 0;  // 进入迭代
 5         for(int i = 0; i < n; i++){
 6             sum = (a + b) % 1000000007;
 7             a = b;
 8             b = sum;
 9         }
10         return a;
11     }
12 }

leetcode运行时间为0ms - 100%, 空间为35.4MB - 79.87%