跳跃游戏 II解题思路详解

题解 跳跃游戏 II

    • 🤚我的博客
    • 🥛前言
  • 跳跃游戏 II
    • 描述
    • 示例
    • 提示
  • 题解
    • 初步思考
    • 思路细节
    • 代码实现
    • 完整代码
  • END
    • 💠END
      • 🏕️公众号

🤚我的博客

  • 欢迎光临我的博客:https://blog.csdn.net/qq_52434217?type=blog

🥛前言

最近有点忙,然后调整了刷题思路,打算按照题型刷题,先从动态规划入手。

跳跃游戏 II

描述

给定一个长度为 n0 索引整数数组 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]

题解

初步思考

根据题目描述,在下标为i时的最大跳数为nums[i],那么在i处能够跳的最远距离为i+nums[i]

例如在示例1中,从下标为0开始,最大跳数为2,那么可以跳到i=1,然后再跳动nums[1]次即可到达i=4处。

想必各位都能想到这一步,但是如何将这个思路转化成代码表达出来呢?

思路细节

首先,肯定是从i=0开始跳,且最大跳数为nums[0],例如示例一中的2

接下来就需要在i=1i=2中找到最大的跳数。为什么呢?我们只需要保证在当前最大跳数内找到下一次的最大跳数即可。以示例一为例,在i=0时,我们跳1步也可,跳2步也可。那么如果我们跳1步,则到达i=1的位置,这时我们的最大跳数为nums[1]=3,当我们选择直接跳跃3步时,就可以到达n-1=4的位置。而如果我们选择在i=0处跳跃2步时,则到达i=2的位置,此时能够跳的最大跳数为1

如果继续按照i=2的位置进行跳跃,那么就可以跳到i=3的位置,这个位置在第二次最大跳跃数范围内。也就是与i=1时向前跳跃2步的情况相同,可以不用再考虑。

那么如何增加跳跃的次数呢?根据上面的分析,无论是在i=2向前跳1步还是在i=1处向前跳2步都是一种情况,也就是只要当前位置跳跃的步数没有超过最大跳跃步数都可以视为当前跳跃次数。那么我们就能使用一个变量,保存最大跳跃的位置,当遍历的i值超过这个最大跳跃位置就对跳跃次数加一

代码实现

根据上面的思路细节,将思路转化成代码

首先需要找到最大的跳数和最大跳跃位置,在i处的最大跳跃次数为nums[i]那么能够跳跃的最大位置是nums[i]+i,而我们是需要找到第x次跳跃时的最大跳跃步数和位置。所以代码如下

maxPos = max(nums[i]+i,maxPos)

以示例一为例,无论i=0处跳到nums[1]还是nums[2],最大跳数都是一样的。具体功能可以参考下面的图

要知道跳跃到的位置i属于第几次跳跃,需要设置一个end下标,当跳跃的位置i=end时,就对跳跃次数加一,并且更新下一次的end位置为maxPosend初始化为0。随后的end则是maxPos的位置。

if i == end:end = maxPosres += 1

完整代码

  • python版本
class Solution:def jump(self,nums):res = 0end,maxPos = 0,0for i in range(len(nums)-1):maxPos = max(nums[i]+i,maxPos)if i == end:end = maxPosres += 1return res
  • java版本
class Solution{public int jump(int[] nums){int res=0,end=0,maxPos=0;for(int i =0;i<nums.length-1;i++){int pos = nums[i]+i;maxPos = pos>maxPos?pos:maxPos;if(i==end){end = maxPos;res++;}}return res;}
}

END

💠END

这个题不难,但是在代码的实现上写得比较仔细。毕竟我的目的就是为了能够强化思路转化代码的能力。

感叹时间过得太快了,计划赶不上变化。也可能是以前的变化不合理导致的,没有抓住问题关键,一直抓瞎。

为了找工作,现在只能放弃项目去专心刷题了。

一起加油!🆙🆙🆙

🏕️公众号

欢迎关注小夜的公众号,一个立志什么都能会的研究生。有不懂的地方请留言踢我!
微信公众号


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1419781.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Leedcode题目:移除链表元素

题目&#xff1a; 这个题目就是要我们将我们的链表中的值是val的节点删除。 我们题目提供的接口是 传入了指向一个链表的第一个节点的指针&#xff0c;和我们要删除的元素的值val&#xff0c;不只要删除第一个&#xff0c; 思路 我们这里可以创建一个新的链表&#xff0c;…

鸿蒙开发接口Ability框架:【DataAbilityHelper模块(JS端SDK接口)】

DataAbilityHelper模块(JS端SDK接口) 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 本模块接口仅可在FA模型下使用。 使用说明 使用前根据具体情况引入如下模块 import featureAbility from …

万能自定义表单系统源码开源版 支持普通表单、付费报名、预约服务等三合一功能

源码简介 高效、灵活地收集和管理数据对于各项运营和决策至关重要&#xff0c;方便了各行业对数据收集的多样化需求。分享一个万能自定义表单系统源码开源&#xff0c;该系统拥有强大的自定义功能和广泛的适用性&#xff0c;支持普通表单、付费报名、预约服务等三合一功能。 …

心理应用工具包 psychtoolbox 绘制小球走迷宫

psychtoolbox 是 MATLAB 中的一个工具包&#xff0c;对于科研人员设计实验范式来说是不二之选&#xff0c;因为它可以操作计算机的底层硬件&#xff0c;精度可以达到帧的级别。 文章目录 一、实验目的二、psychtoolbox 的下载安装三、Psychtoolbox 的基本使用四、完整代码 一、…

VSCode:隐藏工程中的文件和目录

VSCode&#xff1a;设置搜索时的排除目录_vscode全局搜索排除掉某些目录-CSDN博客 介绍了如何排除搜索目录 有时也需要隐藏工程中不必关注的文件和目录。 假设工程中的文件结构如下 $ tree . ├── doc │ └── readme.txt ├── m.cpp └── user_guide 可以通过如下方…

[算法][差分数组][leetcode]1094. 拼车

地址&#xff1a; https://leetcode.cn/problems/car-pooling/description/ 解法一&#xff1a;暴力解法 class Solution {public boolean carPooling(int[][] trips, int capacity) {//特殊条件判断if(nulltrips||capacity<0){return false;}int [] d new int[1001];//暴…

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案?

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案&#xff1f; 1、打开微信&#xff0c;点击搜索框&#xff1b; 2、打开搜索页面&#xff0c;选择小程序搜索&#xff1b; 3、在搜索框&#xff0c;输入词令搜索点击进入词令微信小程序&#xff1b; 4、打开…

任务:单域,域树的搭建

一、单域&#xff1a; 搭建所需的系统&#xff1a;win2016 sever&#xff0c;win10 1.在创建域前&#xff0c;先设置静态ip 先查看win2016 sever的IP&#xff0c; ip&#xff1a;192.168.154.133 网关&#xff1a;192.168.154.2 DNS服务器&#xff1a;192.168.154.2 设置…

Offline: Overcoming Model Bias for Robust Offline Deep Reinforcement Learning

EAAI 2023 paper Intro model-free的离线强化学习由于价值函数估计问题存在训练的稳定性以及鲁棒性较低。本文提出基于模型的方法&#xff0c;同构构建稳定的动力学模型帮助策略的稳定训练。 method 本文基于模型的方法&#xff0c;所构造的转移模型输入状态动作&#xff0…

代码随想录算法训练营第36期DAY18

DAY18 二叉树的层序遍历 102二叉树的层序遍历 “队列先进先出&#xff0c;符合一层一层遍历的逻辑&#xff0c;而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。” 二叉树层序遍历模版&#xff1a; /** * Definition for a binary tree node. * struct TreeNode { *…

ASP.NET一个简单的媒体播放器的设计与实现

摘 要 本论文所描述的播放器是在Microsoft Visual Studio .NET 2003平台下利用Visual Basic.NET语言完成的。使用Visual Basic.NET提供的Windows Media Player控件以及文件处理&#xff0c;最终实现一款别致的&#xff0c;贴近用户操作习惯的媒体播放器。 该播放器实现了对WAV…

05-10 周五 FastBuild 容器启动引起超时问题定位与解决

05-10 周五 FastBuild 容器启动超时问题 时间版本修改人描述2024年5月11日16:45:33V0.1宋全恒新建文档2024年5月11日22:37:21V1.0宋全恒完成解决方案的撰写&#xff0c;包括问题分析&#xff0c;docker命令 简介 关于FastBuild的优化&#xff0c;已经撰写了多个博客&#xff0…

如何选择合适加密软件来保护信息资产|精选加密软件分析

五款加密软件对比分析&#xff0c;是一项复杂而必要的任务&#xff0c;旨在帮助用户选择最适合其需求的加密工具。在数字化时代&#xff0c;信息安全显得尤为重要&#xff0c;因此&#xff0c;对加密软件的评估与比较显得尤为关键。 首先&#xff0c;我们要考虑的是这些加密软件…

GPT-SoVits:语音克隆,语音融合

首发网站 https://tianfeng.space 前言 零样本文本到语音&#xff08;TTS&#xff09;&#xff1a; 输入 5 秒的声音样本&#xff0c;即刻体验文本到语音转换。少样本 TTS&#xff1a; 仅需 1 分钟的训练数据即可微调模型&#xff0c;提升声音相似度和真实感。跨语言支持&…

报表-设计器的使用

1、设计器目录结构 报表设计器以压缩包的方式提供&#xff0c;解压后&#xff0c;目录结构如下&#xff1a; 目录说明&#xff1a; 1、jdk-17&#xff1a;压缩包中自带的windows平台下的jdk17 2、lite-report&#xff1a;报表文件和数据源配置文件的保存位置 3、lite-repor…

[算法][差分][延迟相差][leetcode]2960. 统计已测试设备

题目地址&#xff1a; https://leetcode.cn/problems/count-tested-devices-after-test-operations/description/ 解法一&#xff1a;暴力解法 class Solution {public int countTestedDevices(int[] batteryPercentages) {//特殊条件判断if(null batteryPercentages || ba…

2024精选7个wordpress模板

通用多用途wordpress模板 中国红WordPress模板&#xff0c;适合服务行业企业建站的通用多用途wordpress模板。 WordPress是一款使用PHP语言开发的开源内容管理系统(CMS)&#xff0c;最初设计用于个人博客&#xff0c;但随着时间的发展&#xff0c;它已经演化成为一个功能强大的…

深入分析网络智能摄像头的RTSP协议安全风险

本文为转载&#xff0c;原作者&#xff1a;山石网科安全技术研究院 网络摄像头作为现代安防体系的关键组成部分&#xff0c;已经广泛应用于各类场所&#xff0c;包括交通枢纽、教育机构、企业办公区、零售商场等公共和私人领域。它们主要负责提供实时视频监控&#xff0c;以加…

程序人生 | 人生如棋,落子无悔

人生的开始&#xff0c;始于哭声&#xff0c;浮浮沉沉几十年。终了&#xff0c;一声长叹&#xff0c;在一片哭声中撒手离去。 人生的道路虽然漫长&#xff0c;但是关键就是那么几次机会的选择&#xff0c;可以决定此后几十年的光阴。 有个故事讲&#xff1a;古代有个人去砍柴…

贝壳面试:MySQL联合索引,最左匹配原则是什么?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 1.谈谈你对MySQL联合索引的认识&#xff1f; 2.在MySQ…