由leetcode中70题联想出为啥他是斐波那契数列的形式

由leetcode中70题联想出为啥他是斐波那契数列的形式,第1张

由leetcode中70题联想出为啥他是斐波那契数列的形式 由leetcode中70题联想出为啥他是斐波那契数列的形式 LeetCode70题解题思路

我采用的是递归的方式解出链接LeetCode70题.,代码如下

class Solution {
    HashMap haMap = new HashMap();
    public int climbStairs(int n) {

        

        

         if(n == 1){
             return 1;
         }
         if(n ==2){
             return 2;
         }
         if(haMap.get(n) != null){
             return haMap.get(n);
         }else{
             int result = climbStairs(n-1) + climbStairs(n-2);
             haMap.put(n,result);
             return result;
         }

    }
}

如图

此时绿圈处于黄圈处计算结果一致,又因为6的计算结果是5的计算结果加4的计算结果,所有他是斐波那契数列。
所以我们可以用HashMap将4的结果存起来,当计算5的结果时只需要计算3的结果就可以了。

又由上图结论可以写出如下代码,使用循环的方式实现LeetCode70题的需求。

class Solution {
    public int climbStairs(int n) {

        if(n == 1){
            return 1;
        }
        if(n == 2){
            return 2;
        }

        int subtree = 1;//子树
        int rootNode = 2;//上一个根节点
        int result = 0;

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

            result = subtree + rootNode;
            subtree = rootNode;
            rootNode = result;

        }
        return result;


    }
}

由此可以延伸出 LeetCode的第509题计算菲波那切数列
代码实现

class Solution {
    public int fib(int n) {

        int subTree = 1;
        int rootNode = 1;
        if(n == 1){
            return subTree;
        }
        if(n == 2){
            return rootNode;
        }

        int result = 0;
        for(int i = 3;i <= n;i++){
            result = subTree + rootNode;
            subTree = rootNode;
            rootNode = result;
        }

        return result;

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5686959.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存