news 2026/1/17 8:46:31

LeetCode热题100--55. 跳跃游戏--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100--55. 跳跃游戏--中等

题目

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

示例 1:
输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:
输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

题解

classSolution{publicbooleancanJump(int[]nums){intmx=0;for(inti=0;mx<nums.length-1;i++){if(i>mx){// 无法到达 ireturnfalse;}mx=Math.max(mx,i+nums[i]);// 从 i 最右可以跳到 i + nums[i]}returntrue;}}

解析

出自:两种理解方式:维护最右可达位置/合并区间(Python/Java/C++/C/Go/JS/Rust)

classSolution{//定义一个新的解决方案类publicbooleancanJump(int[]nums){//布尔方法canJump输入一个整型数组nums,用于判断是否可以到达最后一个索引intmx=0;//初始化mx为0。它将用于跟踪我们可以跳到的最远的距离for(inti=0;mx<nums.length-1;i++){//我们遍历整个数组直到我们的“最右”超过或等于数组长度(但不包括长度的最后一个元素,因为我们已经在数组的末尾了)if(i>mx){//如果我们在当前这个点之前无法到达returnfalse;//那么就返回false表示我们无法到达最后一个索引}mx=Math.max(mx,i+nums[i]);//否则,将我们的“最右”更新为旧的“最右”和当前位置加上你可以跳过的最大距离(nums[i])之间的较大值。这样确保了我们总是尽可能地向前走returntrue;//如果没有任何一个点阻挠我们跳过,那么无论如何都可以到达最后一个索引。所以返回true}//这个解决方案的时间复杂度为O(n),其中n是输入数组的长度。空间复杂度也为O(1),因为我们只使用了常量的额外空间来保存mx变量。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/26 12:02:43

你对面向对象编程的理解,面向过程和面向对象有什么区别?

一、开篇&#xff1a;两种编程思想的核心定位 —— 从 “解题逻辑” 到 “工程哲学”编程的本质是 “用代码映射现实问题并解决”&#xff0c;而面向过程&#xff08;POP&#xff09; 与面向对象&#xff08;OOP&#xff09; 绝非 “语法层面的差异”&#xff0c;而是两种贯穿软…

作者头像 李华
网站建设 2026/1/8 21:32:15

Java--双向链表

1.双向链表2.模拟实现双向链表(一).构造节点类首先我们要明白&#xff0c;双向链表的每一个节点都包含一个数据域和两个指针域&#xff0c;一个指针域为前指针域&#xff0c;表示指向当前节点的前一个节点&#xff0c;一个指针域为后指针域&#xff0c;表示指向当前节点的后一个…

作者头像 李华
网站建设 2026/1/17 8:17:21

后端springboot框架入门学习--第三篇

自动配置 可以把自动配置想象成SpringBoot 提前为你准备了大量的 “配置模板”,当你的项目引入了某个依赖、存在某个类、配置了某个属性等等时,这个模板就会自动生效,帮你完成对应的配置。 自动配置的核心:@EnableAutoConfiguration注解触发,加载并筛选XXXAutoConfigura…

作者头像 李华
网站建设 2026/1/8 23:35:31

LobeChat航班信息查询插件开发思路

LobeChat航班信息查询插件开发思路 在智能对话系统逐渐从“能说会道”走向“能干实事”的今天&#xff0c;用户不再满足于AI只是复述百科知识或生成一段文案。他们希望AI能真正帮自己完成具体任务——比如查一下航班是否延误、预订会议室、查看快递进度。这种需求催生了一个关键…

作者头像 李华
网站建设 2026/1/9 12:00:29

Python编程实战:从函数到模块化——创建自己的模块与包

免费编程软件「pythonpycharm」 链接&#xff1a;https://pan.quark.cn/s/48a86be2fdc0在Python项目中&#xff0c;当代码量超过500行时&#xff0c;将所有功能堆砌在一个文件中会变得难以维护。就像整理书房时&#xff0c;把所有书籍堆在书桌上会让人找不到需要的资料&#xf…

作者头像 李华
网站建设 2025/12/25 19:52:20

常见的软件测试用例设计方法有哪些?

常见的软件测试用例设计方法&#xff0c;个人认为主要是下面这6种&#xff1a; 1)流程图法&#xff08;也叫场景法&#xff09; 2)等价类划分法 3)边界值分析 4)判定表 5)正交法 6)错误推测法 这6种常见方法中&#xff0c;我分别按照定义、应用场景、使用步骤、案例讲解…

作者头像 李华