Leetcode 中等:55. 跳跃游戏

LeetCode刷题笔记:跳跃游戏2(动态规划,两种方法,一次AC) 问题概述: 使用最小的步数到达数组末尾。注意每个位置上的元素是在该位置上最多能往后跳的步数,而不是必须跳这么多步,不然有可能根本到不了数组末尾。 问题分析: 这个问题比较复杂,想一下子得到正确思路难度比较大,我们从题目所给的这个例子出发,尝试着寻找解题思路。 首先前两个位置肯定是很好分析的。第一个位置,我们一开始就在这里,所以步数是0.第二个位置也很简单,只能从第一个位置跳过来,所以最小步数是1.在数组长度为1或者2时,就可以直接返回。 那么第三个位置呢?这就有两种选择:从第一个格子跳过来或者从第二个格子 阅读详情

题目:跳跃游戏

  • 题号: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]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

示例 3:

输入:[0]
输出:true

提示:

  • 1<=nums.length<=3∗1041 <= nums.length <= 3 * 10^41<=nums.length<=3∗104
  • 0<=nums[i]<=1050 <= nums[i] <= 10^50<=nums[i]<=105

实现

第一种:贪心算法

贪心算法(greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。

贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。

贪心算法与动态规划的不同在于它对每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。

贪心策略:每次记录能跳到点的最大值,如果当前点超出最大值,返回false,如果最大值达到最后一个位置,返回true。

C# 语言

public class Solution
{
    public bool CanJump(int[] nums)
    {
        int maxlength = 0;      //记录所能到达的最远点
        for (int i = 0; maxlength < nums.Length-1; i++)
        {
            if (i > maxlength)
            {
                return false;//若此点已不能到达,返回false 
            }
            maxlength = Math.Max(i + nums[i], maxlength);
        }
        return true;
    }
}

Python 语言

class Solution(object):
    def canJump(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        maxlength = 0
        for i, num in enumerate(nums):
            if maxlength >= len(nums) - 1:
                break
            if i > maxlength:
                return False
            maxlength = max(i + num, maxlength)
        return True
跳跃游戏 II——力扣45 【代码】跳跃游戏 II——力扣45。 阅读详情

相关推荐

LeetCode 第55题:跳跃游戏

跳跃游戏问题通过贪心算法,可以高效地解决判断是否能够到达数组的最后一个下标。通过维护一个可以到达的最远位置,我们可以在一次遍历中解决问题。贪心算法:通过维护一个可以到达的最远位置,不断更新这个位置,判断是否可以到达最后一个下标。时间复杂度O(n),因为我们只需要遍历数组一次。空间复杂度O(1),因为我们只用了一个额外的变量maxReach。

Gemini的博客 466

力扣(19) - 跳跃游戏

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例 2: 输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

Touale的博客 929

【中等】力扣算法题解析LeetCode55:跳跃游戏

本文介绍了如何用贪心算法解决跳跃游戏问题,判断是否可以从数组起点跳到终点。通过维护当前能到达的最远位置(maxReach),遍历数组时实时更新maxReach,若当前位置不可达则返回false,若maxReach覆盖终点则提前返回true。算法时间复杂度O(n),空间复杂度O(1)。代码使用Java实现,包含初始化、遍历处理和边界检查,确保高效解决问题。

ylumwd的博客 449

Leetcode 55:跳跃游戏

题目描述: 给定一个非负整数数组nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例2: 输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是...

weixin_47382783的博客 852

特斯拉Model 3 BMS主控板拆解:从硬件设计到热管理策略的实战解析

本文深度拆解特斯拉Model 3的BMS主控板,解析其硬件架构与热管理协同策略。文章聚焦于主控板的分区布局、双核MCU的智慧分工,以及从被动监控到主动干预的热管理范式转变,揭示了特斯拉在高压安全、实时控制与系统级工程思维上的设计哲学。

zz67890的博客 593

OpenDRIVE车道计算避坑指南:为什么你的poly3曲线总对不齐?

本文深入解析OpenDRIVE标准中车道几何计算的三大核心难题:参数化三次多项式(ParamPoly3)的坐标系转换与参数映射、车道偏移与宽度的优先级判定,以及螺旋线(Spiral)接续的平滑性保障。通过实战案例与代码示例,提供了一套避免车道线错位与曲率不连续的精确计算与验证方法,是高精地图开发与仿真场景构建的实用避坑指南。

q9w8e7r6t5的博客 422

LeetCode第55题:跳跃游戏(中等)

LeetCode第55题:跳跃游戏(中等) 题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。 解法一:根据第45题跳跃游戏改动得到。 class Solution { public boolean canJump(int[] nums) { int end = 0; ...

new_whiter的博客 236

CANoe从入门到精通“保姆级”教程(二)- 堪称全网“最全”系列

CANoe各功能区介绍;

车载控制器AutoSAR软件开发工程师 2万+

leetcode: 55 跳跃游戏 中等难度

题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。 示例 2: 输入: [3,2,1,0,4] 输出: false 解释: 无论怎...

qq_33373173的博客 138

基于 AUTOSAR 的域控产品软件开发进阶探索

本文深入探讨了AUTOSAR架构在汽车域控产品开发中的进阶应用。首先从系统设计角度分析了AUTOSAR分层架构原理及其在域控产品中的优化部署策略;其次详细介绍了Davinci和EBTresos等主流工具链的特点与协同使用方法;然后重点阐述了ASPICE流程与功能安全/信息安全标准的实施要点;最后分享了多核车载芯片(如NXP S32G)的适配经验与优化实践。通过架构设计、工具运用、标准遵循和芯片适配四个维度的专业解析,为域控产品的AUTOSAR开发提供了系统性指导。

SiArch的博客 1199

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

leetcode题:55. 跳跃游戏(中等)

一、题目解析 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例1: 输入: [2,3,1,1,4] 输出: true 解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。 示例2: 输入: [3,2,1,0,4] 输出: false 解释: 无论怎样,你总会到达索引...

tankpanv的博客 227

把云端打印带回办公室:通信场景 SAP_COM_0466 打通 SAP BTP ABAP environment 与本地打印机的 Pull Integration 实战

摘要: 本文探讨云端SAP系统如何通过SAP_COM_0466通信场景实现与本地打印机的安全连接。核心方案采用Pull Integration模式,由本地组件(如SAP Cloud Print Manager或第三方OMS)主动从云端打印队列拉取任务,避免网络边界冲突。配置流程涵盖通信安排创建、打印队列绑定及权限管理,并强调队列类型必须选择"Pull Integration Queue"的关键细节。方案通过分离云端生产与本地打印环节,既保障安全性又便于运维监控,适用于SAP BTP AB

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 142

【LeetCode】第55题——跳跃游戏(难度:中等)

【LeetCode】第55题——跳跃游戏(难度:中等)题目描述解题思路代码详解注意点 题目描述 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例 2: 输入:nums = [3,2,1,0,4] 输出:false 解释:无

Se7en_Dayz的博客 340

华为OD机试 - 跳房子I(Java 双机位A卷 100分)

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。

学Java,找哪吒 4508

Istio ICA考试之路---2-2

找到dr部分,这部分可以在mirroring里找也可以和题2-1一样在Traffic Management的dr里复制,内容都一样。此题之后都是在cluster-2上操作,所以就不需要再切换了.之后的几题2.1节就忽略掉了。可以看到,80%的流量被镜像到了dev上,实际考试这步可以忽略。看到ex-ip是192.168.126.220。获取gw,把gateways加入到vs配置中。获取istio-ingress的ex-ip。就获得了这样一个模板文件。查看2个pod的日志。

Q先生 853

力扣刷题:55. 跳跃游戏 I 中等

题目: 给定一个非负整数数组nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 class Solution { public boolean canJump(int[] nums) { int n = nums.le..

long_wang_qing的博客 2061

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode 06: 面试题 16.15. 珠玑妙算 (中等); 面试题 16.04. 井字游戏(中等); T55. 跳跃游戏 (中等)

T16: 面试题 16.15. 珠玑妙算 (中等) 珠玑妙算游戏(the game of master mind)的玩法如下。 计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB。要是猜对某个槽的颜色,则算一次“猜中”;要是只猜对颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。 给定一种颜色组合solution和

无知小九的博客 222

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LeetCode 55. 跳跃游戏(中等)

LeetCode 55. 跳跃游戏 - 详细题解

ZeroBugX的博客 1098

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【JS力扣刷题笔记】55.跳跃游戏、45.跳跃游戏II

以下是学习时自己的一些理解与笔记,如有错误欢迎指正与讨论。

Jamcy123的博客 3717

【每日力扣&中医养生】力扣55. 跳跃游戏

本题使用贪心算法解决,通过维护一个能到达的最远位置来判断是否可以到达最后一个位置。贪心算法的核心思想在于每一步都做出局部最优选择,即选择能到达的最远位置,从而保证最终可以达到全局最优。通过这种方式,我们能够在OnO(n)On的时间复杂度内判断是否可以跳跃到最后一个位置。这道题目的核心思路和贪心算法的思想高度一致,通过每一步选择最佳方案来确保最终的整体最优。希望这篇文章能够帮助你更好地理解贪心算法在实际问题中的应用。

未来就在脚下。 1013

力扣第 55 题 跳跃游戏

我们可以用贪心算法来解决这个问题。贪心的核心思想是始终维护当前能够到达的最远位置,并判断是否可以覆盖到数组的最后一个位置。初始化变量maxReach为 0,表示当前能够跳到的最远位置。遍历数组的每个位置i,判断:如果当前下标i大于maxReach,说明无法从前面的跳跃到达位置i,返回false。更新maxReach为,表示当前能够跳到的最远位置。如果遍历结束后,maxReach大于等于数组的最后一个下标,则返回true。

weixin_48941116的博客 994

力扣第55题 跳跃游戏

记录一下刷题历程 力扣第55题 跳跃游戏。

buaichifanqie的博客 1123

LeetCode第55题_跳跃游戏

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

qq_40263592的博客 860

LeetCode 力扣 55. 跳跃游戏

题目描述(中等难度) 45题的时候已经见过这道题了,只不过之前是返回从第 0 个位置能跳到最后一个位置的最小步数,这道题是返回是否能跳过去。 leetCode Solution 中给出的是动态规划的解法,进行了一步一步的优化,但都也比较慢。不过,思路还是值得参考的,上边说的比较详细,这里就不啰嗦了。这里,由于受到 45 题的影响,自己对 45 题的解法改写了一下,从而解决了这个问题。 下边的解法...

wind_liang的博客 1093

LeetCode-55. 跳跃游戏

LeetCode-55. 跳跃游戏 (中等) 题目地址:https://leetcode-cn.com/problems/jump-game/ 文章目录LeetCode-55. 跳跃游戏 (中等)1. 题目描述及示例示例一示例二2. 题解和代码实现代码实现(C++ 2022-3-25)3. 总结 1. 题目描述及示例       给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断

qq_43377337的博客 4653
上一篇: Leetcode 中等:54. 螺旋矩阵
下一篇: Leetcode 中等:59. 螺旋矩阵II
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值