【LeetCode: 45. 跳跃游戏 II + 贪心】

LeetCode 55 & 45:跳跃游戏与跳跃游戏 II - 贪心算法详解 跳跃游戏系列是LeetCode中经典的贪心算法问题,考察对数组遍历和最优策略的理解。本文将详细解析55题(跳跃游戏)和45题(跳跃游戏 II)的解决方案,通过图解和Java实现帮助读者掌握贪心算法的应用。 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

  • 0 <= j <= nums[i]
  • i + j < n

返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

示例 1:

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

示例 2:

输入: nums = [2,3,0,1,4]
输出: 2

提示:

1 <= nums.length <= 104
0 <= nums[i] <= 1000
题目保证可以到达 nums[n-1]

🌟 求解思路&实现代码&运行结果


⚡ 贪心

🥦 求解思路
  1. 贪心算法:通过维护当前能够到达的最远位置 max 和当前跳跃的边界 end,在遍历数组时动态更新这些值。
  2. 跳跃次数统计:每当遍历到当前跳跃的边界 end 时,表示需要进行一次新的跳跃,同时更新跳跃次数 cnt 和新的跳跃边界 end。
  3. 遍历范围:只需要遍历到数组的倒数第二个位置,因为最后一个位置不需要再跳跃。
  4. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public int jump(int[] nums) {
        int n = nums.length;
        int cnt = 0, end = 0, max = 0;
        for (int i = 0; i < n - 1; i++) {
            max = Math.max(max, i + nums[i]);
            if (i == end) {
                cnt++;
                end = max;
            }
        }
        return cnt;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

LeetCode 45 跳跃游戏 II 贪心算法详解:正向边界与反向起点 贪心算法是一种在每一步选择当前最优策略的算法设计思想,广泛应用于区间覆盖、任务调度等资源优化场景。其核心原理在于通过局部最优选择构造全局最优解,但需满足特定前提,例如可达区间的连续性。在跳跃游戏中,问题可抽象为从起点出发,每次跳跃覆盖一段连续区间,求到达终点的最少跳跃次数。这类问题具有明显的区间扩展特征,理解该性质是设计高效算法的关键。本文以 LeetCode 45 跳跃游戏 II 为例,深入拆解两种贪心思路:正向维护当前层边界与下一层最远可达距离的 O(n) 解法,以及从终点反向回溯的 O(n^2) 对比 阅读详情

相关推荐

骨架动作识别新突破:CTR-GCN的通道拓扑优化策略解析

本文深入解析了CTR-GCN在骨架动作识别中的通道拓扑优化策略。通过引入通道级拓扑细化,CTR-GCN克服了传统GCN共享拓扑结构的局限性,显著提升了动作识别的准确率。文章详细介绍了CTR-GCN的三大核心组件设计,包括特征变换模块、通道拓扑建模和通道聚合技术,并提供了实战调参经验和模型压缩技巧,为计算机视觉领域的研究者和开发者提供了有价值的参考。

weixin_27310417的博客 192

【LeetCode: 680. 验证回文串 II + 贪心 + 边界处理】

【LeetCode: 680. 验证回文串 II + 贪心 + 边界处理】给你一个字符串 s,最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

Coder_ljw的博客 1135

ddr3ip核心_DDR3 IP 核配置

DDR3 控制器 IP 核2.DDR3 IP核配置点击 Flow Navigator 面板下的“Project Manager -->IP Catalog”。 在“Memories & Storage Elements -->Memory Interface Generators”分类展开后,可以看到名为“Memory Interface Generator (MIG 7 ...

weixin_33049919的博客 2935

mysql必知必会样例表_《SQL必知必会》笔记1-样例表说明及建表语句

该笔记整理自Ben Forta著,钟鸣、刘晓霞译,人民邮电出版社出版的《SQL必知必会》第4版,具体内容有部分省略。关于存储过程的部分内容,结合了《SQL必知必会》和《MySQL必知必会》。代码测试环境:Win7-64bit、MySQL 5.7、MySQL Workbench 6.3。1 样例表解释说明书中所用的表是一个玩具经销商使用的订单录入系统的组成部分,包括:管理供应商Vendors。管理...

weixin_42467457的博客 2008

数字孪生变电站如何制作?虚拟现实项目强荐广州华锐互动

变电站数字孪生系统可以为提高变电站设备与环境的实时感知能力、在线诊断设备健康状态、促进设备隐藏故障定位和维修效率的提高、实现设备全生命周期提供有力支撑。通过对设备状态的准确评估,可以延长设备的生命周期,实现资产增值。1、3D可视化:建立可视化平台,集中展示所有3D模型信息、数据信息、环境信息和人员信息,包括设备数字模型、建筑外形及内部、周边地形、人员动态、天气、时间等。4、智能监控:采用先进的AI摄像头,通过设备的图像识别,自动智能分析图像,准确分析设备状态、运行动态、外围控制情况。...

gzvrnew的博客 775

1.2 Spring AI V1.1.2版本 架构全景:模块拆解与设计哲学

Override// 检查请求的 Token 数量throw new TokenLimitExceededException("请求超出 Token 限制");@Override// 记录实际消耗的 Token@Override// 最先执行// 接口// 不同实现// 使用方无需改变定义抽象,保证可移植性提供 Fluent API,提升开发体验Advisor 机制提供扩展点,支持灵活定制模块化设计让你只引入需要的依赖自动配置。

小林夕程的博客 219

2225 找出输掉零场或一场比赛的玩家(哈希表)

1. 问题描述: 给你一个整数数组 matches 其中 matches[i] = [winneri,loseri] 表示在一场比赛中 winneri 击败了 loseri 。返回一个长度为 2 的列表 answer : answer[0] 是所有没有输掉任何比赛的玩家列表。 answer[1] 是所有恰好输掉一场比赛的玩家列表。 两个列表中的值都应该按递增顺序返回。 注意: 只考虑那些参与至少一场比赛的玩家。 生成的测试用例保证不存在两场比赛结果相同 。 示例 1: 输入:matches = [[.

二哈 969

YOLOv11改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附创新修改后的C3k2DWRSeg)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv11中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPsYOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备。

Snu77的博客 4184

【前缀和】1456.定长子串中元音的最大数目

这个官方题解采用了滑动窗口的方法来解决问题。通过维护一个固定大小的窗口,我们可以在O(n)的时间复杂度内找到最长连续元音字符的子串。在实际编程中,可以根据具体需求对这个解法进行优化,例如在字符串中只包含元音字符的情况下,可以进一步优化时间复杂度。

进一步有一步的欢喜 408

[yolov5/yolov8修改]替换yolov5/yolov8中的主干网络为EfficientNetv2

针对yolov5和yolov8的主干网络进行替换。

PLH19990227的博客 4146

[nlp] 自然语言理解基准 ATIS Snips

ATIS 4k 21 Intents(not include UNK) 120 SlotsSNIPS 13k 7 Intents(not include UNK) 72 SlotsATIS Benchmark (Intent Detection) | Papers With CodeSNIPS Benchmark (Intent Detection) | Papers With Code

心宝的博客 746

牛客NC406#最长山脉#Java版#一次循环搞定#代码性能O(n)

牛客NC406#最长山脉#Java版#一次循环搞定#代码性能O(n)

个人程序员-猴嗨哦-的博客 616

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

LeetCode 45 跳跃游戏 II:从反向O(n²)到正向O(n)贪心

贪心算法是算法面试中的高频考点,其核心在于每一步都做出当前看似最优的选择,并期待最终结果全局最优。跳跃游戏 II 正是理解该思想的经典题例,它将可达范围抽象为连续区间,通过维护当前边界与下一跳最远边界,将跳跃次数转化为区间层数,从而以O(n)时间解决。掌握这种覆盖区间视角,不仅能高效解答LeetCode 45,还能迁移至区间调度、加油站等变形问题,帮助求职者建立从单边界判断到双边界优化的思维梯度。本文从基础概念出发,对比反向与正向两种贪心策略,剖析边界条件与常见误区,并串讲跳跃游戏系列与背包问题的贪心适用性

weixin_30225755的博客 337

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

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

力扣 LeetCode 45. 跳跃游戏II(Day15:贪心算法)

不过采用了两个覆盖范围,一个是当前的覆盖范围cur,一个是下一步的覆盖范围next。和跳跃游戏一样,也是使用覆盖范围。

qq_61504864的博客 319

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode 45.跳跃游戏II:贪心策略下的最少跳跃次数求解

给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素nums[i]表示你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个下标。假设你总能到达数组的最后一个下标。// 当前覆盖范围的边界// 下一步能到达的最大覆盖范围// 跳跃次数区分当前覆盖范围和下一步最大覆盖范围在适当的时机(到达当前范围边界)进行跳跃每次跳跃都选择能到达的最远范围这种策略确保了每一步都是最优的,从而在整体上得到最少的跳跃次数。

Musennn的博客 429

【算法】贪心算法:LeetCode 55 跳跃游戏、LeetCode 45 跳跃游戏 II

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 的位置。但该下

Zhou_LC的博客 620

LeetCode 热题 100(八):贪心。121. 买卖股票的最佳时机、45. 跳跃游戏 II

121. 买卖股票的最佳时机、45. 跳跃游戏 II

xiaomingming99的博客 305

leetcode:45. 跳跃游戏 II【经典贪心】

已经能到达最后一个(可通过跳跃游戏1判断) 然后还是按照每次能走的区间,记录maxPos 一个个位置遍历,在能走的区间内边走边看找到下一个maxPos 然后如果当前位置i触及end(也就是上一个maxPos的位置,这是我们能走的极限) 这时候step必须加1,同时下一个的end就是我们当前记录的maxPos 极尽贪心之道 总结 走当前油量能支持的所有区间 然后到每个位置边走边看,如果在这个位置加油接下来能到达的最大位置 然后在这个区间内找到下一个区间的maxPos即可...

小楼一夜听春雨 695

LeetCode 45 跳跃游戏II:贪心算法与BFS分层思想全解析

算法面试中,“最少步数”类问题常考察对贪心策略的理解。贪心算法的核心在于:在连续区间覆盖场景下,每一步不追求当前跳得最远,而是选择让下一步覆盖范围最大的位置。通过维护当前可达边界与最远可达位置,可将BFS的逐层扩展压缩为O(n)的线性扫描,兼顾时间效率与代码简洁性。这种思想在路径规划、资源调度、网络扩散等工程问题中应用广泛。本文以LeetCode第45题跳跃游戏II为例,拆解正向贪心与反向贪心两种解法,对比其时间与空间复杂度,并深入剖析贪心正确性及其与BFS分层结构的关联,帮助读者彻底掌握跳跃类问题的通用解

weixin_33462167的博客 271

LeetCode 45. 跳跃游戏 II 深度解析:两种贪心思路与代码优化

本文解析了LeetCode经典题目“跳跃游戏II”的两种贪心算法解法。第一种解法通过逐步选择最优落点实现O(n²)时间复杂度;第二种边界贪心解法优化至O(n)复杂度,但需修正循环条件和提前返回逻辑。文章详细拆解了两种思路的核心逻辑、代码实现及优化方案,强调贪心算法"局部最优→全局最优"的本质。关键点包括特殊场景处理、遍历范围控制和提前终止优化,同时对比了动态规划方案的劣势。通过系统分析帮助读者掌握贪心策略在跳跃问题中的应用技巧。

2401_86788218的博客 609

贪心算法经典题:LeetCode 45跳跃游戏II最小步数解法解析

在算法面试与刷题中,动态规划和贪心算法是求解“最小步数”类问题最常用的两大思路。贪心算法强调每步做出当前最优选择,并通过数学性质保证全局最优,但并非所有最值问题都能直接套用贪心,例如0/1背包就必须依靠动态规划。LeetCode 45“跳跃游戏II”便是理解贪心选择性质与无后效性的绝佳案例:它不要求每一步跳得最远,而是通过区间覆盖的方式,在每跳边界处统一决策,用O(n)时间求得最小跳跃次数。这种“维护最远可达边界”的思维模型,还能迁移到区间合并、视频拼接等更多场景。掌握该题既能提升面试中快速识别贪心策略的能

weixin_34199764的博客 270

力扣HOT100之贪心算法:45. 跳跃游戏 II

处,则说明我们已经达到了当前覆盖范围的边界,我们需要先判断是否已经到达数组的边界,如果还没到达,则当前是。由于这道题保证一定能跳到终点,所以我们只需要考虑如何花最少的次数跳到终点,这里我们定义。,没想到今天的感受和当时的感受都一模一样。进入下次跳跃的覆盖范围,我们再不断地更新下下次跳跃的最远覆盖范围,即。已经到达了数组边界,则无需进行下一次跳跃,直接退出循环即可。的基础,这道题会好做一点,但是依旧想不出来思路,回去看了下。代表本次跳跃后所能达到的覆盖范围的最远边界,移动到下一次跳跃后的覆盖范围的边界,即。

weixin_52151595的博客 552

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

原题链接:https://leetcode-cn.com/problems/jump-game-ii/ 解题思路: 该题是55. 跳跃游戏的加强版。 由于该题保证最终能够到达nums.length - 1位置,我们只要考虑每次都跳跃到当前已知能够到达的最远位置即可。 假设当前已经在某个位置target,只需从前遍历数组,查找最先能够跳跃到当前点的位置,也就是找到了这次跳跃的最大距离。之后将target移动到这个位置,完成向前跳跃一次。 不断重复回退的过程,当到达起始点时,就知道了最小跳跃次数。 /**

Lee Chen的博客 276

leetcode45:跳跃游戏II(贪心算法)

leetcode45:跳跃游戏II 题目: 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 思路:贪心算法 代码如下: class Solution { public int jump(int[] nums) { int res = 0; //下一步覆盖最远距离 int nextDistance = 0; /

immortalize的博客 1200

贪心算法:leetcode 122.买卖股票的最佳时机II、55.跳跃游戏、45.跳跃游戏II

c++ leetcode 贪心算法

qq_52097561的博客 141
上一篇: 【LeetCode: 912. 排序数组 + 归并排序】
下一篇: 【LeetCode: 240. 搜索二维矩阵 II + 指针 + 遍历】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

硕风和炜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值