【LeetCode】解题55:Jump Game

Leetcode-55:跳跃游戏(多种解法) 题目链接 https://leetcode-cn.com/problems/jump-game/ 题目 给定一个非负整数数组nums,你最初位于数组的第一个下标。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 示例1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例2: 输入:nums = [3,2,1,0,4]... 阅读详情

Problem 55: Jump Game [Medium]

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

Example 1:

Input: [2,3,1,1,4]
Output: true
Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.

Example 2:

Input: [3,2,1,0,4]
Output: false
Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.

来源:LeetCode

解题思路

解题思路类似Problem 45: Jump Game II
利用贪心算法的思想:
一个点选择下一个跳跃点的原则为:下一个跳跃点能够跳的最远。可以解释为,如果跳得最远的点都跳不到数组末尾,那么结果必然是false。
在每个位置index的搜索过程中,选择下一个跳跃点的公式为:
n e x t _ p o i n t = arg max ⁡ i { i + n u m s [ i ] } next\_point = \argmax_i\{i + nums[i]\}\\ next_point=iargmax​{i+nums[i]}
其中, i ∈ [ i n d e x + 1 , i n d e x + n u m s [ i n d e x ] ] i \in [index + 1, index + nums[index]] i∈[index+1,index+nums[index]],然后对 n e x t _ p o i n t next\_point next_point进行递归搜索。

具体过程:

  • 使用递归搜索,从index=0开始,直到index + nums[index] >= N-1时结束,每次返回下一步递归结果。
  • 在每个位置index的搜索过程中,搜索范围为当前位置能够跳跃的范围(index+1 ~ index + nums[index]),在该范围中找到一个能够在未来跳得最远的点,作为下一层递归的起始点。如果没有比本身跳得更远的,则不改变index的值。
  • 递归结束条件:
    a. 当前点能够一步跳到数组末尾(index + nums[index] >= N-1),直接返回true。
    b. 在搜索下一个跳跃点时,发现跳跃范围内有点可以一步跳到数组末尾,直接返回true。
    c. 发现下一个跳跃点永远是本身,即下一步没有能跳得更远的选择,说明永远跳不到数组末尾,直接返回false。

运行结果:
在这里插入图片描述

Solution (Java)

class Solution {
    public boolean canJump(int[] nums) {
        int N = nums.length;
        if(N == 0 || N == 1) return true;
        if(N == 2) return (nums[0] != 0);
        return max_len(0, nums, N);
    }
    private boolean max_len(int start, int[] nums, int N){
        if(start + nums[start] >= N - 1) return true;
        int max = start + nums[start];
        int next_start = start;
        for(int i = start + 1; i <= start + nums[start]; i++){
            if(i + nums[i] >= N - 1) return true;
            if(i + nums[i] > max){
                max = i + nums[i];
                next_start = i;
            }
        }
        if(next_start == start) return false;
        return max_len(next_start, nums, N);
    }
}
55. Jump Game(跳跃游戏)三种解法(C++ & 注释) 55. Jump Game(跳跃游戏)1. 题目描述2.2.1 解题思路2.2 实例代码2.2.1 解题思路2.2 实例代码2.2.1 解题思路2.2 实例代码2. 参考资料 1. 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3步到达最后一个位置。 示例 2 阅读详情

相关推荐

迪文DGUSII串口屏中文显示实战:手把手教你制作16x16点阵字库

本文提供了一份迪文DGUSII串口屏16x16点阵中文字库制作的完整实战指南。从显示原理、字体选择与参数设置,到使用FontLib Make工具生成字库文件,再到部署、调用及存储空间优化,手把手教你解决中文显示难题,确保界面文字既美观又稳定。

weixin_29190573的博客 152

LeetCode之55. Jump Game

Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if yo...

iNiBuBian的博客 354

基于Simulink的永磁同步电机(PMSM)无位置传感器矢量控制与龙伯格观测器设计​

本文介绍了基于Simulink的永磁同步电机(PMSM)无位置传感器矢量控制方法,重点讲解了龙伯格观测器的设计与实现。主要内容包括:1)系统架构与数学推导,通过静止坐标系状态方程和极点配置构建观测器;2)Simulink建模步骤,从电机模型搭建到观测器核心代码实现;3)仿真结果对比分析,显示龙伯格观测器相比滑模观测器具有更好的平滑性和抗噪能力;4)工程部署建议,包括参数在线辨识、低速补偿策略和代码生成优化。该方法实现了全速域无感运行,稳态转速误差小于1%,为低成本高可靠性电机控制提供了有效解决方案。

amy_mhd的博客 160

leetcode 55 Jump Game 详细解答

leetcode 55 Jump Game 详细解答 解答1: 此题需要从后往前考虑, 需要初始化一个额外的数组dp,用以保存下标 i 是否能够到达数组nums最后的下标,如果能到达, dp[ i ] = True 如果不能到达,dp[ i ] = False 所以 示例1中的数组dp就是 [True, True, True, True] 示例2中的数组dp就是 [False, False, False, False, True] 如何判断下标 i 是否能到达数组nums最后的下标呢? 情况1: 如

qq_22210659的博客 300

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南)

本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。

pz89012345的博客 325

STM32平台中ARM架构向量表配置:手把手教程

深入讲解STM32平台下arm架构的向量表配置方法,结合实际操作步骤,帮助开发者掌握中断向量的定位与初始化,提升嵌入式系统开发效率。

weixin_42514540的博客 800

Leetcode 55. Jump Game

题目 解法1:dfs+memorization (TLE) 照例来讲这种解法应该是o(n)的但是不知道为啥会超时,莫非是我时间复杂度估计得不对? class Solution: def canJump(self, nums: List[int]) -> bool: def dfs(curr_pos,n): if curr_pos >= n: return False # check if w

qq_37821701的博客 399

Mac安装Weblogic教程

1.Weblogic的下载 这次安装的是最新版本12 官网下载地址: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 下载需要登录账号,如没有账号要注册一个 下载后的文件如下图,其中fmw_12.2.1.3.0_wls_quick.jar文件就是安装包了,注意现在不要对它进行解压 2.安装前的确...

weixin_40102675的博客 5061

[leetcode]55. Jump Game

Solution 1:贪心1 这是参照前面的jump game2写的,其实都不需要currend这个 class Solution { public boolean canJump(int[] nums) { int currEnd=0; int currFar=0; //贪心用的最远距离 if(nums.length==1)return t...

Belle_Chou的博客 165

新手避坑指南:用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR,这些参数设置错了白忙活

本文详细介绍了使用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR时的关键参数设置技巧,帮助新手避免常见错误。重点解析了连接图生成、干涉工作流、DEM处理等环节的12个关键参数,包括Max Normal Baseline、Unwrapping Coherence Threshold等,提供实测安全值范围和优化建议,确保处理效率和结果准确性。

weixin_30694389的博客 557

SRAM ECC原理与应用:从汉明码到高可靠嵌入式系统设计

在嵌入式系统与高可靠性计算领域,内存数据完整性是系统稳定运行的基石。软错误(Soft Error)由宇宙射线或芯片内部粒子引发,可能导致存储单元发生位翻转,进而引发程序跑飞或数据损坏。为应对这一物理层挑战,错误校验与纠正(ECC)技术应运而生,其核心原理基于扩展汉明码,通过增加校验位实现单错误纠正、双错误检测(SECDED)能力。这项技术通过硬件透明纠错,在提升系统可靠性的同时,几乎不影响访问性能。在汽车电子、工业控制及航空航天等对安全性要求极高的场景中,ECC已成为保障长期稳定运行的关键硬件机制。本文聚焦

weixin_28728265的博客 527

leetcode解题之45. Jump Game II&55. Jump Game java (跳跃游戏)

leetcode解题之45. Jump Game II&55. Jump Game java (跳跃游戏)。动态规划,贪心。

mine_song的博客 3720

S32DS S32K312 LPSPI + DMA配置异步SPI

配置DMA->Specific Configuration->Dma Logic Channel->Configuration->Global。SpiPhyUnitMapping:将该配置Mapping到某一路Spi,此工程配置为Spi1,遂选择LPSPI_1。配置的该路SPI的片选ID,此处ID对应配置Pin脚时lpspi_pcs后的下表(本工程此处为PCS3)配置该路SPI对应的SPI硬件单元ID,本工程配置为Lpspi1,因此配置为CSIB1。首先配置SPI的Pin脚,此处使用的是LPSPI_1。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2361

LeetCode 55. Jump Game 题解

本题是贪心算法的经典问题,主要考察对贪心思想的理解和应用。通过维护一个能够到达的最远位置,我们可以高效地判断是否能够到达最后一个下标。贪心算法的核心思想是:在每一步都做出当前情况下的最优选择,从而希望最终得到全局最优解。在本题中,我们的最优选择是尽可能地扩大能够到达的最远位置。这种方法不仅适用于跳跃游戏问题,还可以应用于许多其他需要贪心策略的问题,例如跳跃游戏 II、加油站问题等。掌握贪心算法的思想,对于解决这类问题非常重要。

cannonjinx的博客 4008

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【LeetCode】55. Jump Game 解题报告(Python)

题目分析: 这一题是让我们以某个数值位置跳跃,值为跳跃步数,看是否能跳跃到最后,与【LeetCode】45. Jump Game II 一样,还要简单一些,我们直接借助这个思路即可。思路就是从某个位置i+num[i]相加一直取大,看最后是否大于等于nums的length-1。 测试代码: class Solution: def canJump(self, nums): ne...

L141210113的专栏 643

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Leetcode55. Jump Game

Leetcode55. Jump Game Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that posi...

magic_jiayu的博客 172

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JAVA算法:Jump Game 45题和55题算法详解

在LeetCode中45题和55题是关于Jump Game的问题,下面来看看这两道题目的求解方法。 这两个题目的区别是:55题的要求判断你是否能够从开始位置跳到结束位置;而45题的要求是求你从开始位置能够跳到结束位置的最小跳跃次数。。 原题链接: 55.Jump Gamehttps://leetcode.com/problems/jump-game/ Given an array of...

梅森上校的博客 业精于勤荒于嬉,形成于思毁于随。 481

[LeetCode] 55. Jump Game

原题链接:https://leetcode.com/problems/jump-game/ 1. 题目介绍 Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your m...

Ber03的博客 202

LeetCode: 55. Jump Game(Medium)

1. 原题链接 https://leetcode.com/problems/jump-game/description/ 2. 题目要求 给定一个整型数组,数组中没有负数。从第一个元素开始,每个元素的值代表每一次你能从当前位置跳跃的步数。问能否跳到该数组的最后一个元素位置 注意:可以跳的步数超出数组长度依旧视为可以达到最后位置 3. 解题思路 从第一个元素开始遍历,记录下你所...

aysk1112的博客 144

【leetcode刷题】45 & 55 jump game & jump game 2

原题链接 https://leetcode.com/problems/jump-game/ https://leetcode.com/problems/jump-game-ii/ 解题思路 两道题思路类似,都是用贪心算法。记录下跳i步时可以跳过的最大距离。但是注意,在确定第i+1步的最远距离时,需要考虑所有i-1步到i步之间范围起始点,跳两步寻找i+1步的最远距离。 对于jump game,当st...

Arwen的博客 153

Leetcode 55. Jump Game dp

Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if yo...

salmonwilliam的博客 524

LeetCode 55. Jump Game 解题报告

LeetCode 55. Jump Game 解题报告题目描述Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at tha

骆小坑的填坑之旅 658

LeetCode 55 Jump Game 跳跃游戏

LeetCode 55 Jump Game 跳跃游戏 Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Determine if you are able to reach the last inde

qq_38801813的博客 182
上一篇: 【LeetCode】解题54:Spiral Matrix
下一篇: 【LeetCode】解题56:Merge Intervals
Fayedy
博客等级 码龄11年 2粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值