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

289 阅读1分钟

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

  • 典型的斐波那契数列问题

递归解法

f(n)=f(n-1)+f(n-2)

public class Solution {
    public int JumpFloor(int n) {
        if (n == 1) return 1;
        if (n == 2) return 2;
        return JumpFloor(n - 1) + JumpFloor(n - 2);
    }
}
  • 时间复杂度:O(2的n次幂) 不建议面试写这个。

临时记录变量解法

public class Solution {
    public int JumpFloor(int n) {
        if(n==0||n==1) return n;
        int a=1,b=1,c=0;
        for(int i=2;i<=n,i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)