青蛙跳台阶

作者: 就良同学 | 来源:发表于2019-02-13 13:00 被阅读0次

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。


思路:

我们先考虑青蛙第一跳:

  • 第一次跳1个台阶,那么还剩n-1个台阶,跳法为f(n-1)
  • 第一次跳2个台阶,那么还剩n-2个台阶,跳法为f(n-2)

所以总的跳法:f(n)=f(n-1)+f(n-2)

  • 当跳到只剩1个台阶时,有1种跳法:f(1)=1
  • 当跳到只剩2个台阶时,有2种跳法:f(2)=2

观察发现,这就是一个斐波那契数列

image

我的代码:

public int JumpFloor(int target) {//target为台阶总数
        if(target==2){
            return 2;
        }
        if(target==1){
           return 1;
        }
        if(target<=0){
            return 0;
        }
        return JumpFloor(target-1)+JumpFloor(target-2);
    }

运行时间:544ms

占用内存:9056 k


改进:

为避免递归产生的栈溢出,改用自底向上的动态规划(迭代)来解题:

 public int JumpFloor(int target) {
       if(target==2){
            return 2;
        }
        if(target==1){
           return 1;
        }
        if(target<=0){
            return 0;
        }
        int first = 1, second = 2, third = 0;
        for (int i = 3; i <= target; i++) {
            third = first + second;
            first = second;
            second = third;
        }
        return third;
    }

运行时间:15ms

占用内存:9328 k


相关文章

  • 动态规划

    青蛙跳台阶问题 问题:一个青蛙,一次只能跳一级台阶,或者跳两级台阶,这个青蛙跳 n 级台阶有多少种跳法? 如果这只...

  • 算法---青蛙跳台阶问题

    一只青蛙可以一次跳一级台阶,也可以一次跳两级台阶,如果青蛙要跳上n级台阶,共有多少钟跳法? 问题分析 当青蛙即将跳...

  • 青蛙跳台阶问题

    青蛙跳台阶One 问题描述 一只青蛙一次可以跳1级台阶,也可以跳2级台阶。求该青蛙跳上一个级的台阶总共有多少种跳法...

  • 青蛙跳台阶--python

    一只青蛙可以一次跳 1 级台阶或者一次跳 2 级台阶,例如:跳上第 1 级台阶只有一种跳法:直接跳 1 级即可。跳...

  • 常见数据结构与算法题

    范畴:递归 1、青蛙跳台阶 青蛙跳台阶算法,每次可以跳1级或两级,请问有n级台阶,有多少种算法,递归和非递归如何写...

  • python编程题

    1、台阶问题、斐波那契 一只青蛙可以跳上一级台阶,也可以跳上两级台阶,求青蛙跳上一个n级台阶共有多少种跳法 方法一...

  • 每日一题[12]-青蛙跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解:1个台阶:12个台阶...

  • 010.2,斐波那契数列

    跳台阶 题目描述一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳...

  • 循环-跳台阶-java

    跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

  • 【leetcode C语言实现】剑指 Offer 10 II.青

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案...

网友评论

    本文标题:青蛙跳台阶

    本文链接:https://www.haomeiwen.com/subject/qooreqtx.html