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

103 阅读1分钟

image.png leetcode原题

解题思路

只需要根据斐波那契数列的性质 => F(N) = F(N - 1) + F(N - 2)

求得第 n 项的值即可

需要注意的是 0<=0,所以需要特殊判断 n = 0 及 n = 1 的情况

var fib = function(n) {
  // 特殊判断
  if(n<2) return n;
  const mod = 1000000007;
  // 利用滚动数组优化空间复杂度
  let num1 = 0,num2 = 1,cur;
  // 求得每一项的值
  for(let i = 2;i<=n;i++){
    cur = (num1+num2)%mod;
    num1 = num2;
    num2 = cur;
  }
  // 返回第n项的值
  return cur%mod
};