「LeetCode」剑指Offer-10-I 斐波那契数列⚡️

简介: 「LeetCode」剑指Offer-10-I 斐波那契数列⚡️

image.png

前言🌧️



算法,对前端人来说陌生又熟悉,很多时候我们都不会像后端工程师一样重视这项能力。但事实上,算法对每一个程序员来说,都有着不可撼动的地位。


因为开发的过程就是把实际问题转换成计算机可识别的指令,也就是《数据结构》里说的,「设计出数据结构,在施加以算法就行了」。


如今的大环境里,算法已经成为了前端工程师发展路上不可或缺的技能之一。如果我们想未来更上一层楼,不再是只写业务代码的应用工程师,就离不开对算法和数据结构的掌握。


当然,学习也是有侧重点的,作为前端我们不需要像后端开发一样对算法全盘掌握,有些比较偏、不实用的类型和解法,只要稍做了解即可。


题目🦀



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


难度简单


写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:


F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.


斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。


示例 1:


输入:n = 2
输出:1


示例 2:


输入:n = 5
输出:5

提示:


  • 0 <= n <= 100


解题思路🌵



  • 可以采用动态规划和分而治之(递归)


  • 本题采用动态规划


  • 以后遇到这种问题,叠加的,尽量回想起这个套路,先新建一个初始化数组,再开始叠加


源码🔥



/**
 * @param {number} n
 * @return {number}
 */
var fib = function(n) {
   const num=[0,1]
    for(let i=2;i<=n;i++){
        num[i]=(num[i-1]+num[i-2])%1000000007
    }
    return num[n]
};

时间复杂度:O(1)


空间复杂度:O(n)


结束语🌞



image.png

image.png


那么鱼鱼的LeetCode算法篇的「LeetCode」剑指Offer-10-I 斐波那契数列⚡️就结束了,算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾,欢迎加我好友,一起沙雕,一起进步

相关文章
|
2天前
leetcode代码记录(动态规划基础题(斐波那契数列)
leetcode代码记录(动态规划基础题(斐波那契数列)
9 0
|
2天前
剑指Offer LeetCode 面试题10- I. 斐波那契数列
剑指Offer LeetCode 面试题10- I. 斐波那契数列
24 0
|
Java Python
【LeetCode每日一题】剑指 Offer 10- I. 斐波那契数列(持续更新)
【LeetCode每日一题】剑指 Offer 10- I. 斐波那契数列(持续更新)
72 0
|
Java C++
LeetCode(剑指 Offer)- 10- I. 斐波那契数列
LeetCode(剑指 Offer)- 10- I. 斐波那契数列
73 0
|
存储 算法
LeetCode题解—斐波那契数列
今天继续算法题:斐波那契数列
109 0
【刷穿 LeetCode】剑指 Offer 10- I. 斐波那契数列 :「动态规划」&「打表」&「矩阵快速幂」
【刷穿 LeetCode】剑指 Offer 10- I. 斐波那契数列 :「动态规划」&「打表」&「矩阵快速幂」
|
算法 Java C语言
LeetCode刷题509-简单-斐波那契数列
LeetCode刷题509-简单-斐波那契数列
96 0
LeetCode刷题509-简单-斐波那契数列
|
算法 Java C#
LeetCode刷题offer10-1-简单-斐波那契数列
LeetCode刷题offer10-1-简单-斐波那契数列
95 0
LeetCode刷题offer10-1-简单-斐波那契数列
|
2天前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
9 0