当前位置: 首页 > article >正文

【Leetcode 热题 100】55. 跳跃游戏

问题背景

给你一个非负整数数组 n u m s nums nums,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 t r u e true true;否则,返回 f a l s e false false

数据约束

1 ≤ n u m s . l e n g t h ≤ 1 0 4 1 \le nums.length \le 10 ^ 4 1nums.length104
0 ≤ n u m s [ i ] ≤ 1 0 5 0 \le nums[i] \le 10 ^ 5 0nums[i]105

解题过程

由于数组中记录的是最大的跳跃长度,所以实际上只要判断最终能不能达到或者超过数组中的最后一个位置即可。
具体的做法时遍历数组的同时始终维护可达的最远位置,潘顿这个最远位置能否达到或者超过数组中的最后一个位置。

具体实现

class Solution {
    public boolean canJump(int[] nums) {
        int max = 0;
        // 这里由于 max 增长比 i 要快,这样写能够一定程度上减少循环的次数
        for(int i = 0; max < nums.length - 1; i++) {
            if(i > max) {
                return false;
            }
            max = Math.max(max, i + nums[i]);
        }
        return true;
    }
}

http://www.kler.cn/a/511430.html

相关文章:

  • Qt QML专栏目录结构
  • 【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)
  • 非科班转码第5年零241天
  • 【大数据2025】Hadoop 万字讲解
  • Rust:指针 `*T` 和引用 `T`的区别
  • AI刷题-小R的随机播放顺序、不同整数的计数问题
  • IT程序设计文档,软件需求设计文档,详细设计模板(Word原件)
  • windows蓝牙驱动开发-蓝牙设备栈
  • c.p.api.config.MyAuthenticationProvider
  • 动手学大数据-3社区开源实践
  • leetcode——分割两个字符串得到一个回文字符串(java)
  • C# 中yield关键字:解锁高效迭代的魔法钥匙
  • 【北京迅为】iTOP-4412全能版使用手册-第八十五章 一键烧写QT程序到开发板
  • 批量清理docker 容器日志
  • springboot基于小程序的会宁县周边乡村旅游服务系统
  • ScratchLLMStepByStep:训练自己的Tokenizer
  • JAVA安全—JWT攻防Swagger自动化Druid泄露
  • 03_UI自适应
  • 《AI赋能中国制造2025:智能变革,制造未来》
  • 正态分布检验(JB检验和威尔克检验)和斯皮尔曼相关系数(继上回)
  • 2025年01月18日Github流行趋势
  • 多语言插件i18n Ally的使用
  • Android-Gradle-自动化多渠道打包
  • 【Docker】Supervisor 实现单容器运行多服务进程
  • macOS查看当前项目的 tree 结构
  • 【Envi遥感图像处理】001:Envi5.6完整版下载安装教程