二刷--斐波那契数列

简介: 二刷--斐波那契数列

这是博主第二次刷这个题目,经典题目的经典算法,斐波那契数列可以采用递归来进行求解,但是如果要求的数字比较大的情况下,会出现重复计算的问题,复杂度比较高,所以我们本次采用的是非递归的方法,极大的降低了时间和空间复杂度。

题目描述

image.png

解题思路

  • 如果目标值小于等于1,则直接返回。
  • 如果目标值大于等于1,则定义两个临时变量保存前两个数字。
  • 通过循环的方法不断更新这两个值,即可求出最终的解。

AC代码

由于leetcode上需要进行取余计算,我们只需要给结果去个余即可。

var fib = function (n) {
    if (n <= 1) return n;
    let prev1 = 1;
    let prev2 = 0;
    let result = 0;
    for (let i = 2; i <= n; i++) {
        result = (prev1 + prev2) % 1000000007;
        prev2 = prev1;
        prev1 = result;
    }
    return result;
};
复制代码

题目反思

  • 学会使用非递归的方法求解斐波那契数列来降低算法的复杂度。
相关文章
|
4天前
|
算法 C++
(C++)四数之和--双指针法
(C++)四数之和--双指针法
27 0
|
7月前
|
人工智能
poj 2299 Ultra-QuickSort 求逆序数 树状数组解法
所谓离散化,我们的了解就是对原数组排序,然后用所在位置的下标代替原数,这样我们就可以把数据范围缩小到1-500000,这个数组是开的下的。
23 0
算法--递归辗转相除法求最大公约数
算法--递归辗转相除法求最大公约数
Fibonacci斐波那契数列的几种题型
Fibonacci斐波那契数列的几种题型
78 0
|
机器学习/深度学习 算法
斐波那契数列的四种解法
斐波那契数列的四种解法
斐波那契数列的四种解法
|
前端开发 程序员 测试技术
斐波那契数列的多种解法
斐波那契数列的多种解法
斐波那契数列的多种解法
|
机器学习/深度学习 算法 数据可视化
C++ 基础复习系列3(递归算法){Fibonacci函数、Hanoi问题}
C++ 基础复习系列3(递归算法){Fibonacci函数、Hanoi问题}
C++ 基础复习系列3(递归算法){Fibonacci函数、Hanoi问题}
|
存储
二刷--两数相加
二刷--两数相加
95 0
二刷--两数相加