LeetCode45-跳跃游戏2

力扣算法题之每日一题 问题描述: 给你一个非负整数数组 nums ,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 你总是可以到达数组的最后一个位置。 输入: arr[2,3,0,1,4] 输出:2 问题分析: 题目的意思是说给定一个数组,数组里的每一个元素的值代表它能跳跃的最大值,比如上面给出的数组arr中的第一个元素是2,说明它可以最大跳跃值为2,即能跳到0的位置。注意题目的意思是让求最优解(花最短的步数完成) 解决方案: ... 阅读详情

LeetCode45-跳跃游戏2

Leetcode / 力扣

45. 跳跃游戏 II:

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
假设你总是可以到达数组的最后一个位置。

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 10^4
  • 0 <= nums[i] <= 1000

解题思路1:

动态规划,用dp[i]表示走到i位置的最小部署,我们每次用i位置更新到i+nums[i]位置即可

class Solution {
    const int maxn=0x3f3f3f3f;
public:
    int jump(vector<int>& nums) {
        int len=nums.size();
        vector<int>dp(len,maxn);
        dp[0]=0;
        for(int i=0;i<len;++i) {
            for(int j=i;j<=i+nums[i]&&j<len;++j) {
                dp[j]=min(dp[j],dp[i]+1);
            }
        }
        //for(int i=0;i<len;++i)
        //    cout<<dp[i]<<endl;
        return dp[len-1];
    }
};
跳跃游戏II:从动态规划到贪心算法的边界推进详解 在算法面试与LeetCode刷题过程中,如何从动态规划(DP)方案过渡到贪心算法,是许多开发者面临的典型思维进阶题。动态规划通过求解每个子问题的最少步数得到全局最优,但O(n^2)的复杂度在大规模数据下效率受限。贪心算法利用跳跃覆盖边界的单调性,以线性时间完成求解,其核心在于每轮将可达边界推进到最大值,而非纠结具体落脚点。这种“区间覆盖”思想不仅适用于跳跃游戏,还可迁移至视频拼接、灌溉花园等区间优化问题。深刻理解边界推进的证明与代码变量设计,能帮助你在面试中清晰讲解贪心的最优性,从“背代码”升级为“讲原理” 阅读详情

相关推荐

Python阿里面试题:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。

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

懒骨头707 1万+

LeetCode 45 跳跃游戏 II(Java)

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

qq_43623492的博客 3018

力扣(leetcode)45、跳跃游戏2超详细题解,经典贪心算法

所以在范围区间内部某点(记为a)即使有跳的更远的地方,则maxPosition也会保留下来,我们就可以认作上次跳跃是从start-a (含有一个step),a-maxPosition,因为start可以跳到最远的end,也就可以跳一步跳到a。的范围内,我们维护一个maxPosition,表示能跳到的最远距离,每次遍历maxPosition = Math.max(maxPosition, i + nums[i]);下一次跳跃的最远距离在哪?这样每到达一个边界的时候,我们就结束了当前跳跃,而进入到下一次跳跃。

qq_46248151的博客 1218

【LeetCode】跳跃游戏II

【代码】【LeetCode】跳跃游戏II。

weixin_59546710的博客 305

夏令营纪实——东南大学计科院&PALM实验室面试全解析

本文详细解析了东南大学计科院与PALM实验室夏令营的面试全流程,包括前期准备、技术考察、项目经验深挖等关键环节。特别针对自然语言处理(NLP)和机器学习(ML)领域的高频问题提供应对策略,帮助申请者提升面试表现。文章还分享了实用的准备技巧和面试经验,为有意向参加该夏令营的学生提供宝贵参考。

convnet3designer的博客 459

别再只会用Kriging了!用Python+GeoPandas手把手实现IDW插值(附完整代码与可视化)

本文详细介绍了如何使用Python和GeoPandas实现反距离加权插值(IDW),包括核心算法、参数调优和可视化技巧。通过完整代码示例,帮助读者掌握这一空间数据分析技术,适用于环境监测、气象预报等多个领域,提升数据处理效率和灵活性。

weixin_30872157的博客 225

[LeetCode 45] 跳跃游戏2 (Ⅱ)

维护一个当前能到达的最大边界(窗口),每次更新边界时,步数++。通俗理解就是因为当前的最大边界就是这一步能跳到的,如果想跳出更大的,则需要继续跳一步才行。所以第一个跳到当前点i的点j必是步长最小的。,则更新 dp(dp[i]存储到当前。往前找,如果前面某个点能到当前点。**证明:**假设有一个点。

qq_45371462的博客 846

MobaXterm结合SSH密钥对安全连接阿里云ECS的实战教程

本文详细介绍了如何使用MobaXterm结合SSH密钥对安全连接阿里云ECS的实战教程。通过对比传统密码登录的风险,重点讲解了密钥对的生成与配置、阿里云控制台的密钥绑定技巧,以及MobaXterm的高级设置和故障排查方法,帮助用户实现高效、安全的远程连接。

weixin_29208327的博客 466

力扣45:跳跃游戏2题解

力扣45:跳跃游戏2题解

zhilanguifang的博客 559

「API取数」FDL获取金蝶云星空的单据数据

本文介绍了如何使用FDL实现金蝶云API取数以及如何有效应对复杂的API数据处理场景。

oOBubbleX的博客 2027

分布式训练中All-Reduce、All-Gather、Reduce-Scatter原理

Reduce-Scatter = 先对所有进程的数据做 Reduce(如 sum / mean),再把结果“切分”分发给各进程。(是 Reduce + Scatter 的融合操作。

comli_cn的博客 340

LeetCode 45 跳跃游戏2

从下标为 0 跳到下标为 1 的位置,跳。向后跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。

qq_57391651的博客 357

全网最全-DA14531-全球最小-BLE从入门到精通开发教程

本教程主要适用于低功耗产品,DA14531它体积小,非常适用于对体积敏感的设备,如无线可穿戴、传感器、助听器等设备。本文经过作者发大量时间来记录开发项目的调试方法,里面有许多笔者开发心得体会,旨在让读者工程师快速上手,减少摸索时间,提高软件质量。读者对象本文档主要适用以下工程师:嵌入式系统工程师单片机软件工程师IOT固件工程师BLE固件工程师。

hejinwu1314的博客 5137

力扣第45题-跳跃游戏2

从下标为 0 跳到下标为 1 的位置,跳。向后跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。

qq_42268998的博客 371

(三十九)Flask 多应用架构(Multiple Apps)与 DispatcherMiddleware 实战解析

(三十九)Flask 多应用架构(Multiple Apps)与 DispatcherMiddleware 实战解析

孤寒者的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode 45.跳跃游戏2

https://leetcode-cn.com/problems/jump-game-ii/ 给你一个非负整数数组 nums ,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 思路: 贪心算法,即每次在可选择的范围内都选择可以跳到更远的位置,即可获得跳跃最小的次数。 例如:[2, 3, 1, 4, 1, 2] 第一步在2的位置,可以选择挑到3,或者跳到1。由于跳到3可以跳到更远的位

Supposelll的博客 3260

jre9下载 jdk9

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

【leetcode】45. 跳跃游戏2

每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。输入: nums = [2,3,1,1,4]解释: 跳到最后一个位置的最小跳跃数是 2。输入: nums = [2,3,0,1,4]

qq_38473254的博客 220

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NTscan扫描工具

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

leetcode 第45题:跳跃游戏2

学好算法没有捷径,最好的捷径就是多刷题,并且跳出舒适区,每道题都要寻找最优解,也不能老是做那些你自己比较擅长的题,不定期更新 Leetcode 的题,每道题都会给出多种解...

帅地 4242

Leetcode 45: 跳跃游戏2

先回顾一下跳跃游戏1(Leetcode 55): class Solution { public boolean canJump(int[] nums) { if(nums[0] == 0 && nums.length ==1) return true; if(nums[0] == 0 && nums.length >...

xxxxx 641

leetcode45_跳跃游戏2

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

qq_41864967的博客 166

leetcode45跳跃游戏2 Java

题目描述给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。 思路: 普通版的跳跃问题,只需要求出是否可...

冒个泡儿的博客 439

代码训练营第35天:贪心算法part2|leetcode122买卖股票的最佳时机2|leetcode55跳跃游戏|leetcode45跳跃游戏2

这道题的贪心思路也不复杂,从第一个点出发,遍历能到达的所有点,找到这些点中能到最远未知的点作为下一次遍历的起点,最终如果超过了数组长度就能到达,没超过就不能到。如果移动下标等于当前覆盖最大距离下标, 需要再走一步(即 ans++),因为最后一步一定是可以到的终点。如果移动下标不等于当前覆盖最大距离下标,说明当前覆盖最远距离就可以直接达到终点了,不需要再走一步。最后的步数就是最少步数。这道题我开始想的是,55题每次找最远就是最优的思路,只要统计次数就行,后来发现不对,例如。注意那个循环终止条件。

weixin_44442376的博客 133

力扣45:跳跃游戏2

本题是一个典型的贪心算法问题,通过维护两个指针,我们可以在一次遍历中找到到达数组末尾的最小跳跃次数。这种方法时间复杂度较低,适用于较大规模的数组。

m0_61476090的博客 544

力扣算法题45-跳跃游戏2

官方题解有点想不到,自己的方法还是比较容易想到,也能AC,个人感觉会容易想到的也可以。

m0_56609631的博客 310
上一篇: LeetCode44-通配符匹配
下一篇: LeetCode46-全排列
baodream
博客等级 码龄10年 55粉丝 239原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值