跳台阶_JAVA_中等

跳台阶

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

递归

  • 设跳到n层的方法数为f(n),则f(n) = f(n - 1) + f(n - 2)
public class Solution {
    public int JumpFloor(int target) {
        if(target <= 1) return 1;
        return JumpFloor(target - 2) + JumpFloor(target - 1);
    }
}

动态规划

  • 设跳到n层的方法数为f(n),则f(n) = f(n - 1) + f(n - 2)
  • 每次只需要使用到前两层方法数,所以只需要两个变量保存
public class Solution {
    public int JumpFloor(int target) {
        int first = 1, second = 1;
        // 超过两层就计算
        while(target-- > 1) {
            // 当前层数等于前面一层跳法+前面两层跳法
            second += first;
            first = second - first;
        }
        return second;
    }
}
全部评论

相关推荐

在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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