LeetCode刷题之HOT100之跳跃游戏

2024/6/5 今天下起了绵密细雨,空气清新很多。昨晚做的梦较魔幻,可能也是导致我睡觉时业已破损的小米手环8的表腕断裂的因素之一。来到实验室,打扫一下卫生,听听歌,做道题。好不自在呀!

1、题目描述

在这里插入图片描述

2、逻辑分析

这道题与我们小时候玩的飞行棋有些相似,唯一不同的是这道题可以选择跳跃,最大长度不超过所在位置元素数值。又是动态规划问题吧,怎么解决呢?我还是不会做啊,总觉得差点哪一步就是做不出来。看了题解,发现跟我昨天做的最大子数组相似。

  1. 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点
  2. 可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新
  3. 如果可以一直跳到最后,就成功了
    下面是具体代码实现

3、代码演示

public boolean canJump(int[] nums) {
        // k 用来记录当前能够到达的最远位置
        int k = 0;
        // 遍历数组中的每个元素
        for(int i = 0; i < nums.length; i++){
            // 如果当前位置i已经超出了当前能够到达的最远位置k,那么就无法到达这个位置,返回false 
            if(i > k) return false;
            // 更新当前能够到达的最远位置k,取当前位置i加上当前步长nums[i]与之前的k中的较大值  
            // 这样,k就始终保持着从起点开始能够到达的最远位置
            k = Math.max(k, i + nums[i]);
        }
        // 如果在某一步中,k能够到达或超过数组的最后一个位置(nums.length-1),那么就可以从起点跳到终点  
        // 但是这里我们不需要立即返回true,因为还需要继续检查剩余的元素是否有更远的跳跃可能性  
        // 只有在遍历完整个数组后,都没有返回false,才说明可以从起点跳到终点
        // 如果能够遍历完整个数组而没有返回false,那么说明可以从起点跳到终点
        return true;
    }

复杂度

时间复杂度: O(n),其中 n为数组的大小。只需要访问 nums 数组一遍,共 n 个位置。
空间复杂度:O(1),不需要额外的空间开销。

总结

dp思想还是很值得学习的,结合昨天的最大子数组再看看想想画画,加深理解,下次再做相似的题就可以下手了。那么这道题就先到这儿啦!再见

相关推荐

  1. LeetCode——55. 跳跃游戏(HOT100)

    2024-06-06 16:42:06       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 16:42:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 16:42:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 16:42:06       82 阅读
  4. Python语言-面向对象

    2024-06-06 16:42:06       91 阅读

热门阅读

  1. js 数组过滤删除空对象

    2024-06-06 16:42:06       25 阅读
  2. 基于R语言的糖尿病检测模型准确率97%

    2024-06-06 16:42:06       27 阅读
  3. 【杂记-IDS入侵检测系统、IPS入侵防御系统】

    2024-06-06 16:42:06       33 阅读
  4. Android 架构组件面试问答

    2024-06-06 16:42:06       19 阅读
  5. ubuntu22.04 安装mongodb的管理工具

    2024-06-06 16:42:06       30 阅读
  6. 2024-05-29 架构-程序设计-思考

    2024-06-06 16:42:06       32 阅读
  7. 2024/6/6随笔

    2024-06-06 16:42:06       26 阅读
  8. General API Questions for Full Stack Developer

    2024-06-06 16:42:06       29 阅读
  9. Less的简单总结

    2024-06-06 16:42:06       22 阅读