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

题目描述

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

过程

有点类似斐波那契数列。还是f(n-1)+f(n-2)

public class Solution {
    public int JumpFloor(int target) {
        if(target==1) return 1;
        if(target==2) return 2;
        return JumpFloor(target-2)+JumpFloor(target-1);
    }
}

类比JZ7的优化方法,动态规划。

public class Solution {
    public int JumpFloor(int target) {
        if(target==1) return 1;
        if(target==2) return 2;
        int one = 1;
        int sum = 2;
        for (int i=3;i<=target;i++){
            sum = sum + one;
            one = sum - one;
        }
        return sum;
    }
}

so easy~ mom再也不用担心我的学习~

再去看看题解有什么宝贝……


没什么宝贝。

最好的复杂度:

时间复杂度:O(n)
空间复杂度:O(1)

你可能感兴趣的:(数据结构与算法,&,刷题)