题解 | #矩阵最长递增路径#

跳台阶

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



package com.hhdd.dp;

/**
 * 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
 * <p>
 * 数据范围:1 \leq n \leq 401≤n≤40
 * 要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)
 *
 * @Author HuangLusong
 * @Date 2022/4/1 20:58
 */
public class 跳台阶 {
    /**
     * 用递归做
     * 当规模小到 2 范围即可返回
     *
     * @param target
     * @return
     */
    public int jumpFloor(int target) {
        if (target <= 2) {
            return target;
        }
        return jumpFloor(target - 1) + jumpFloor(target - 2);

    }

    /**
     * 递归很多重复计算的地方,如f(5) = f(4) + f(1) = f(3) +f(1) +f(1) 也等于 f(3) +f(2)
     * 其实f(3)就被重复计算了,完全可以存储起来
     *
     * @param target
     * @return
     */
    private int[] arr = new int[50];

    /**
     * 通过记忆搜索的方式优化时间效率
     *
     * @param target
     * @return
     */
    public int jumpFloor2(int target) {
        if (target <= 2) {
            return target;
        }
        if (arr[target] != 0) {
            return arr[target];
        }
        arr[target] = jumpFloor2(target - 1) + jumpFloor2(target - 2);
        return arr[target];
    }

    /**
     * 通过dp解决,优化掉递归栈空间
     * 有点像找规律,解法2的反过程
     * 知道f(1) f(2)则可知道f(3)
     * 知道f(3) f(2)则可知道f(4)
     *
     * @param target
     * @return
     */
    public int jumpFloor3(int target) {
        arr[1] = 1;
        arr[2] = 2;
        for (int i = 3; i <= target; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        return arr[target];
    }

    public static void main(String[] args) {
        跳台阶 demo = new 跳台阶();
        long start = System.currentTimeMillis();
        int i = demo.jumpFloor3(7);
        long en = System.currentTimeMillis();
        System.out.println(start - en);
        System.out.println("i = " + i);
    }
}



全部评论

相关推荐

12-23 18:51
中南大学 Java
唉又萌混过关:是不是那种收钱盖实习章的机构?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
12-18 11:21
优秀的大熊猫在okr...:叫你朋友入职保安,你再去送外卖,一个从商,一个从政,你们两联手无敌了,睁开你的眼睛看看,现在是谁说了算(校长在背后瑟瑟发抖)
选实习,你更看重哪方面?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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