小青蛙跳台阶

跳台阶

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;
    }
}
全部评论

相关推荐

01-26 22:20
已编辑
门头沟学院 Java
Java抽象带篮子:项目很nb了,现在好好准备八股和算法吧,早点找实习,可以看看我的置顶帖子。帖子里写了怎么改简历,怎么包装实习经历,还有2个高质量可速成的项目话术,和我的牛客八股笔记专栏
点赞 评论 收藏
分享
2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务