小青蛙跳台阶

跳台阶

http://www.nowcoder.com/questionTerminal/8c82a5b80378478f9484d87d1c5f12a4

递归

和上题类似,第n阶的可能为跳到第n-1阶和第n-2阶两种情况所有的可能加起来。其结构和斐波那契数列一样,只是开始的两个数字为:1 和 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);
    }
}

优化存储空间

形式1

时间复杂度为 图片说明
空间复杂度为图片说明

public class Solution {
    public int JumpFloor(int target) {
        int a = 1, b = 1;
        for (int i = 1; i < target; i++) {
            a = a + b;
            b = a - b;
        }
        return a;
    }
}

形式2

时间复杂度为 图片说明
空间复杂度为图片说明

public class Solution {
    public int JumpFloor(int target) {
        if(target == 1) return 1;
        if(target == 2) return 2;
        int sum = 2;
        int a0 = 1;
        for(int i =3; i <= target; i++){
            sum = sum + a0;
            a0 = sum - a0;
        }
        return sum;
    }
}
全部评论

相关推荐

牛至超人:把哈工大,再加大加粗,看见闪闪发光的哈工大字样,面试官直接流口水
投递字节跳动等公司6个岗位
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务