`

LintCode 查找斐波纳契数列中第 N 个数

 
阅读更多

查找斐波纳契数列中第 N 个数。

所谓的斐波纳契数列是指:

  • 前2个数是 0 和 1 。
  • 第 i 个数是第 i-1 个数和第i-2 个数的和。

斐波纳契数列的前10个数字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

 

 

class Solution {

    /**

     * @param n: an integer

     * @return an integer f(n)

     */

    public int fibonacci(int n) {

        // write your code here

        /*  递归 超时,时间有限制,不能通过测评

        // 测试提示:你的代码运行时间超过了限制,检查你的时间复杂度。

        //   TLE通常是由死循环造成的,思考一下你的时间复杂度是否是最优的。

        if(n>=1){

            if(n==1||n==2){

                return n-1;

            }else{

                return fibonacci(n-1)+fibonacci(n-2);

            }

            

        }else{ 

           return -1;

        }

        */

      

        //枚举法 效率高

        if(n<=0){

            return -1;

        }else if(n==1||n==2){

            return n-1;

        }else{

            int s1=0;

            int s2=1;

            int sum=0;

            for(int i=3;i<=n;i++){

                sum=s1+s2;

                s1=s2;

                s2=sum;

            }

            return sum;

        }

        

    }

}

 

分享到:
评论

相关推荐

    编程类lintcode项目实例

    在这个“编程类lintcode项目实例”中,我们可以深入学习和实践各种编程技巧,尤其是字符串处理和递归算法。下面将详细讨论这两个核心知识点。 **字符串处理**在计算机科学中占据了重要地位,尤其是在编程面试中。...

    Lintcode1-40题的答案

    在这个"Lintcode1-40题的答案"中,我们可以预期找到的是前40道Lintcode算法题目的解决方案,每道题目通常会附有注释以解释解题思路和关键步骤。这些题目覆盖了各种基础和进阶的算法知识,对于理解和掌握算法有着重要...

    java-lintcode阶梯训练第三章

    递归是函数或方法调用自身的技术,常用于解决分治策略的问题,如快速排序、斐波那契数列等。在LintCode的训练中,递归是解决问题的重要工具。 7. **动态规划**: 动态规划是一种通过将复杂问题分解为更小的子问题...

    java-lintcode阶梯训练第四章

    5. **递归与回溯**:递归是解决复杂问题的一种常见方法,如斐波那契数列、八皇后问题等。回溯则常用于解决组合优化问题,如全排列、N皇后问题等。 6. **位运算**:在某些优化算法或者处理二进制问题时,位运算是...

    Algorithm-LintCode.zip

    在这个名为"Algorithm-LintCode.zip"的压缩包中,包含了289个LintCode平台上的算法问题的C++解决方案,是学习和实践算法的宝贵资源。 1. **基础算法**:这些题目涵盖了基础的排序(如冒泡排序、插入排序、快速排序...

    leetcode-jian-zhi-offer:剑指Offer50题视频讲解

    leetcode 剑指 Offer 50 道经典算法题视频讲解 「剑指 Offer」是何海涛写的一本算法面试书,书中精选了 50 道常见的程序员面试题,这些题目偏向中低难度...斐波那契数列 - - leetcode 509 | lintcode 366 二进制中 1 的

    Leetcode-Lintcode:Leetcode和Lintcode

    LeetCode和Lintcode是两个非常受欢迎的在线编程挑战平台,主要针对准备技术面试,特别是针对数据结构和算法的练习。这两个平台提供了大量的编程题目,帮助开发者提升编程技能和解决实际问题的能力。本压缩包文件...

    算法合集解析_275.pdf

    数学问题包括计算阶乘、斐波那契数列、逆波兰表达式的计算、丑数(只包含质因数2、3、5的数)的生成、2的幂次的计算等。处理数学问题时,通常需要对数学规律有深刻理解,如动态规划或递归的思想。 海量数据处理则是...

    leetcode-lintcode:leetcode,lintcode算法题记录

    在IT领域,特别是软件开发和数据结构算法的学习中,LeetCode和LintCode是两个非常知名的在线平台。它们提供了丰富的编程题目,旨在帮助开发者提升算法能力、掌握数据结构,并且为面试准备提供实战训练。本篇文章将...

    LintCodeSolutions:LintCode解决方案

    例如,Fibonacci数列、背包问题、最长公共子序列等。 4. **贪心策略**:在一些优化问题中,贪心算法能够得到满意的结果。Python的高效执行能力使得贪心策略易于实现,如最小生成树、活动选择等。 5. **图论与网络...

    Algorithm:Leetcode + Lintcode

    3. **动态规划**:解决具有重叠子问题和最优子结构的问题,如斐波那契数列、最长公共子序列等。 4. **回溯法**:用于在解空间树中搜索所有可能解,例如八皇后问题、N皇后问题、数独求解等。 5. **图论**:包括最小...

    LeetCode-LintCode:日常利用java,js,swift,c++等语言刷的一些算法题,一方面学习新语言,一方面保持自己逻辑思维能力

    许多复杂的算法问题可以通过递归或分治策略简化,例如斐波那契数列、归并排序、快速排序等。 12. **字符串处理**: C++中的`std::string`类提供了丰富的字符串操作方法,如连接、比较、查找子串等。 在实际的...

    算法运动场:LeetcCodeLintCode问题的个人运动场

    动态规划问题如斐波那契数列、背包问题;图论问题如最短路径、拓扑排序;字符串处理问题如KMP算法、Z算法等。每个子文件夹代表一个特定的算法或问题类型,每个Java文件则对应一个问题的具体解决方案。 在学习和实践...

    算法

    在本项目中,作者用它来记录自己的算法学习过程,主要关注于LeetCode和LintCode这两个在线平台上的问题。LeetCode提供了各种算法题目,旨在提升编程技能和解决实际问题的能力,而LintCode则是一个类似的平台,提供...

    Algorithm-by-Company:数据结构,OJ问题

    2. **动态规划**:背包问题、最长公共子序列、斐波那契数列等。 3. **贪心算法**:最小生成树、活动安排等。 4. **回溯法和深度优先搜索**:八皇后问题、图的遍历等。 5. **滑动窗口**:最大子数组和、最常出现的...

Global site tag (gtag.js) - Google Analytics