二刷--斐波那契数列

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

题目描述

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;
};

题目反思

  • 学会使用非递归的方法求解斐波那契数列来降低算法的复杂度。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部