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%