LeetCode题解:45. 跳跃游戏 II,贪心从后向前,JavaScript,详细注释

算法编程题:跳跃游戏 II 本文首发于我的公众号码农之屋(id:Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。 一、题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例:输入: [2,3,1,1,4] ... 阅读详情

原题链接:https://leetcode-cn.com/problems/jump-game-ii/

解题思路:

  1. 该题是55. 跳跃游戏的加强版。
  2. 由于该题保证最终能够到达nums.length - 1位置,我们只要考虑每次都跳跃到当前已知能够到达的最远位置即可。
  3. 假设当前已经在某个位置target,只需从前遍历数组,查找最先能够跳跃到当前点的位置,也就是找到了这次跳跃的最大距离。之后将target移动到这个位置,完成向前跳跃一次。
  4. 不断重复回退的过程,当到达起始点时,就知道了最小跳跃次数。
/**
 * @param {number[]} nums
 * @return {number}
 */
var jump = function(nums) {
  let target = nums.length - 1; // 初始时在最后位置,向前查找
  let step = 0; // 统计跳跃次数

  // 当target===0,即已经回退到起始点时,退出循环
  // 如果进入循环,会导致多向后退一步
  while (target > 0) {
    // 每次循环都从前开始遍历
    for (let i = 0; i < target; i++) {
      // 找到第一个能够到达当前所处位置的点
      // 也就是从i跳跃了最大距离,到达了target
      if (i + nums[i] >= target) {
        // 将target移动到i位置,即为回退一次
        target = i;
        // 每回退一次,跳跃次数加1
        step++;
        // 继续遍历已无意义,提前退出,否则会超时
        break;
      }
    }
  }

  return step;
};
GD32单片机开发环境搭建(Keil5安装) 1.安装MDK5 由于GD32 Keil 版本例程的工程是基于Keil MDK-ARM 5.25 uVision5 创建的,所以我在此也安装MDK5.25版本。 下载链接:https://pan.baidu.com/s/1E4tcDQvsVl0xezU3pEyJTA 提取码:s1fr 其他版本下载链接:https://cloud.tencent.com/developer/article/1605195 选择安装路径(不要装到中文路径下,避免不必要的麻烦): 用户信息随便... 阅读详情

相关推荐

IFIX5.8在Win10系统下的安装避坑指南

本文提供了IFIX5.8在Windows 10系统下的详细安装教程与避坑指南。针对常见的驱动缺失、UAC拦截及兼容性报错等问题,文章从安装前准备、分步安装流程到安装后配置与驱动修复,给出了系统性的解决方案,帮助工控从业者顺利完成部署。

f6g7h8i9j的博客 364

华为OD机试“找终点”问题详解:贪心算法与多语言实现

贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法思想,其核心原理是通过局部最优解期望达到全局最优。在解决最优化问题,特别是涉及序列决策的场景中,贪心策略因其高效性而具有重要技术价值。典型的应用场景包括任务调度、资源分配和路径规划。本文以华为OD机试中高频出现的“找终点”(即最少跳跃次数)问题为具体案例,深入剖析如何运用贪心算法在线性时间内求解。文章提供了C++、Java、JavaScript和Python四种主流语言的完整实现与对比,并针对数组遍历和边界条件等常见“坑点”给出了调试技巧与避坑指南,

weixin_34116110的博客 362

利用腾讯云轻量服务器快速搭建网站CDN

腾讯云的轻量最近在主机和站长中间可谓是占尽来风头,优秀的线路,低廉的价格使得越来越多的人开始使用腾讯云的轻量级服务器来部署应用。由于腾讯云轻量服务器的海外服务器电信走的是CN2GIA线路带宽30m挺适合做CDN的,我就记录一下如何利用腾讯云香港的轻量服务器搭建一个CDN。 购买服务器 首先选购服务器,最近腾讯云在做活动,力度很大国内备案用户可以选用国内的服务器最低128元/年,未备案的可以选用香港或者新加坡的服务器。 购买链接 服务器系统选Debian、Ubuntu、centos都可以 一键脚

demo_top的博客 2565

LeetCode题解:45. 跳跃游戏 II,贪心正向查找,JavaScript,详细注释

原题连接:https://leetcode-cn.com/problems/jump-game-ii/ 解题思路: 该题是55. 跳跃游戏的加强版。 由于该题保证最终能够到达nums.length - 1位置,我们只要考虑每次都跳跃到当前已知能够到达的最远位置即可。 例如输入[2,3,1,1,4],第一次从索引0跳到索引2,此时target = 2,同时遍历数组。 当遍历到target为2时,我们已遍历的数组部分为[2,3,1],那么第二次跳跃就能跳到索引4,即target = 4。事实上此时已经跳跃到了

Lee Chen的博客 240

Win11系统下Notepad++右键菜单失效?3种修复方法实测有效(附注册表备份指南)

本文针对Windows 11系统中Notepad++右键菜单失效的常见问题,提供了三种经过实测有效的修复方法。核心解决方案包括使用官方NppShell.dll重新注册、手动修复注册表项以及系统级问题排查,并详细说明了操作前的注册表备份指南,确保修复过程安全可靠。

m2n3b4v5c6的博客 328

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1012

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

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

mine_song的博客 3720

【Ablation Studies 理解】深度学习模型组件的对比实验/性能分析

Ablation Study 用于检测深度学习/机器学习模型中各部分构件对于整体的重要性。 可以理解为为:组件\tricks重要性测试、组件性能系统性分析、控制变量法、组件去除对比实验、性能敏感性测试、性能因子分析等 Ablation Studies 一些新颖的深度学习模型在论文中都会进行AblationStudy,这部分的主要意义在于系统性的移除模型中的各种组件/trick等因子或者是创新的...

TomRen 4588

算法爱好者——算法题:跳跃游戏 ? 待解决

给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。写一个函数判断你是否能到达数组的最后一个位置。注意事项:这个问题有两个方法,一个是贪心和 动态规划。贪心方法时间复杂度为O(N)。动态规划方法的时间复杂度为为O(n^2)。我们手动设置小型数据集,使大家可以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划

wjheha的博客 539

辉芒微教程第五篇《定时器0实现LED灯闪烁》

定时器定时器,一听就跟个闹钟似的,对于嵌入式定时器大部分的应用中,也的确可以这么理解,但是这只能肤浅地这么理解,实际其功能不仅仅是用来计数定时,但是对于我们这种8位单片机,这么理解就够了。

qq_41809823的博客 723

YOLOv8首创原创改进:即插即用|创新的轻量化非对称多级压缩LADH检测头

总结而言,本文介绍了一种名为轻量化非对称多级压缩LADH检测头的原创改进,该改进可与YOLOv8无缝适配,并显著提升了检测器的性能。在本文中,我们介绍了一种原创改进的检测头,名为轻量化非对称多级压缩LADH检测头,它可与YOLOv8无缝适配,显著提升了检测器的性能。此外,我们引入了多级压缩的概念,通过在不同的检测层级上应用不同程度的压缩,进一步提升了检测头的轻量化特性。具体而言,我们采用了逐级减少卷积核数量和通道数量的策略,以降低模型的参数量和计算复杂度,同时保持较高的检测精度。

IbcVue的博客 2181

JavaScript:leetcode_45. 跳跃游戏 II(贪心算法)

题目说明 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。 说明: 假设你总是可以到...

Eighteen Z 440

飞牛NAS系统盘占用过高排查与解决全记录(已有效解决)

📢NAS弹出系统盘占用过高预警?别慌!亲测解决全流程来啦~ 精准定位根源+安全迁移数据,附详细实操步骤,帮同款困扰的你高效释空间、少走弯路!

XiaoqiangClub的博客 3124

leetcode题目 跳跃游戏系列题目

题目: 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. Your goal is t

cainiaoxiaomin的专栏 771

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

leetcode每日题45. 跳跃游戏 II

题目来源这里跳跃游戏 II 我把题目复制到这里来~ 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。 说...

weixin_42275589的博客 283

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

前端codetop手撕算法

核心思路:最优解是哈希表法,用 O (n) 时间复杂度解决,空间复杂度 O (n)(存储哈希表);关键逻辑:遍历过程中计算补数,查哈希表是否存在,存在则返回,不存在则存入;优势对比:哈希表法比暴力法效率提升百倍以上(尤其数组长度大时),符合进阶要求。46. 全排列方法时间复杂度空间复杂度特点迭代法O(n)O(1)空间更优,面试推荐递归法O(n)O(n)逻辑更简洁,但有递归栈开销核心逻辑迭代法:双指针遍历,逐个反转节点指向;递归法:先反转子链表,再调整当前节点指向。

2302_80168280的博客 573

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C语言/跳跃游戏(Jump Game)

先看要求题意理解:如题意所示,但注意 “可以跳跃的最大长度”指的是可跳跃范围!解题思路:做法有多种,最简单的利用多重嵌套if-else if-else或多重循环嵌套(for、while等)这里就不演示了。                通过贪心法来解决这道题,每次到达一个位置之后,我们都有一个可以选择的跳转范围,如果在这个范围里,我们可以选出最优跳跃路径(即最远可以达到哪个位置),就可以直接抛弃其...

qq_38959715的博客 6693

日期时间转时间戳以及时间戳转日期时间

直接给出两个函数,第一个函数是将日期时间类型的列表转为时间戳类型的列表,第二个则是将时间戳类型的列表转为日期时间类型的列表。 日期时间转时间戳 def datetime_to_timestamp(series,series_name): name=[] value=[] for i in range (len(series)): if not np.isna...

sunmingyang1987的博客 1104

刷题77——跳跃游戏

116.跳跃游戏 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/jump-game 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 ...

明媚 221

leetcode—跳跃问题

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

weixin_41311617的博客 1075

LeetCode解析------45.跳跃游戏II-贪心算法

题目: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 简单介绍: 题目:子集 题目难度:中等 使用语言:JAVA 这道题来自leetcode题库的回溯算法标签。 解题思路: 首先看题、分析题意,我们可以明确1个关键点: 1.从头到尾遍历数组,每遇到一个新数

weixin_44337475的博客 286

leetcode。45. 跳跃游戏 II

给定一个非负整数数组,你最初位于数组的首位。数组中的每个元素表示你在该位置的最大跳跃长度。你的目标是用最小跳跃次数到达最后一个索引。例如: 给定一个数组 A = [2,3,1,1,4]跳到最后一个索引的最小跳跃数是 2。(从索引 0 跳到 1 跳1步,然后跳3步到最后一个索引。)注意:假设你总是可以到达最后一个索引位置。一开始以为是dp。。。其实是贪心,每次找范围内index + next最大的索...

1988的博客 2866

LeetCode2461~2480题目解析

LeetCode2461~2480题目解析

jiaomubai的博客 121

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 176

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 208
上一篇: LeetCode题解:45. 跳跃游戏 II,贪心正向查找,JavaScript,详细注释
下一篇: LeetCode题解:102. 二叉树的层序遍历,BFS,JavaScript,详细注释
TRAPPIST-1e-Luna
博客等级 码龄19年 261粉丝 453原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值