跳跃游戏问题(算法村第十七关黄金挑战)

跳跃游戏

55. 跳跃游戏 - 力扣(LeetCode)

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 13 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

其实不用关心跳几步,怎么跳,而是要关心最大的跳跃范围能不能覆盖到终点

public boolean canJump(int[] nums)
{int coverage = 0;   //覆盖范围for (int i = 0; i <= coverage; i++) //覆盖范围达不到下一个位置时,退出循环{//每遍历一个位置,覆盖范围要么不变,要么延伸。coverage = Math.max(coverage, i + nums[i]);//如果终点在当前覆盖范围内,那一定有办法跳到终点if (coverage >= nums.length - 1)return true;}return false;
}

跳跃游戏 Ⅱ

45. 跳跃游戏 II - 力扣(LeetCode)

给定一个长度为 n0 索引整数数组 nums。初始位置为 nums[0](意思是nums[0]所在的位置,即索引为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

public int jump(int[] nums)
{//起点即终点,不需要跳if (nums.length == 1)return 0;int maxBoundary = 0;int right = 0;int step = 0;//left负责寻找最大覆盖范围,right负责跳到覆盖边界,step负责记录right跳跃的步数for (int left = 0; left < nums.length - 1; ++left){maxBoundary = Math.max(maxBoundary, left + nums[left]);//left在[left, right-1]之间遍历时,maxBoundary可能会更新//所以要求left 追上 right,right再跳到 maxBoundary 处if (left == right){right = maxBoundary;step++;}//能一步跳到终点了if (right >= nums.length - 1)return step;}//跳不到(但此题不会出现这种情况)return -1;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能-零基础

机缘 扩充下知识栈&#xff0c;准备零基础开始 人工智能零基础 日常 日常水一下博客… 憧憬 努力成为一个会人工智能的程序员

软考笔记--构件与软件复用

构件也称为组件&#xff08;component&#xff09;&#xff0c;是一个功能相对独立的具有可复用价值的软件单元。在面向对象的方法中&#xff0c;一个构件有一组对象组成&#xff0c;包含可一些协作的类的集成&#xff0c;它们协同工作来提供一种系统功能。可复用性是指系统和其…

138.乐理基础-等音、等音程的意义

上一个内容&#xff1a;137.乐理基础-协和音程、不协和音程 上一个内容里练习的答案&#xff1a; 等音、等音程的意义&#xff0c;首先在 19.音阶 里写了&#xff0c;一个调使用的音阶应当是从主音快开始&#xff0c;以阶梯状的形式进行到主音结束&#xff0c;这样才能明显从乐…

在docker中运行 pip 报错 Can‘t start new thread

原因源头 stackoverflowhis is because the default seccomp profile of Docker 20.10.9 is not adjusted to support the clone() syscall wrapper of glibc 2.34 adopted in Ubuntu 21.10 and Fedora 35.由于docker 版本与最新版 python 容器冲突导致 解决方案 以下三种方…

b站小土堆pytorch学习记录—— P16 神经网络的基本骨架 nn.Module的使用

文章目录 一、前置知识1.nn是什么2.nn如何使用 二、代码 一、前置知识 1.nn是什么 在深度学习中&#xff0c;“nn” 通常是指神经网络&#xff08;Neural Network&#xff09;的缩写。神经网络是一种由大量神经元&#xff08;neurons&#xff09;相互连接而成的模型&#xff…

【Python】成功解决TypeError: list indices must be integers or slices, not float

【Python】成功解决TypeError: list indices must be integers or slices, not float &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…

vue 打包配置

vue打包配置记录一下 publicPath: 打包的路径 默认值&#xff1a;/&#xff08;根目录&#xff09;&#xff1b; 任意路径&#xff1a;""或者"./" (相对路径) 参照&#xff1a;Vue CLI4.0 webpack配置属性——publicPath_publicpath怎么写相对路径-CSDN…

springboot读取自定义配置

springboot读取自定义配置 application.yml自定义配置 my-app:ip1:#dmz1 ftp服务器ipAddress: 172.12.23.456port: 21username: adminpassword: adminip2:ipAddress: 172.12.23.457port: 21username: adminpassword: admin方式1&#xff0c;Value注解 Component public clas…

两天学会微服务网关Gateway-Gateway工作原理

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

【网站项目】144校园二手物品交易平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

FRM模型十四:FRA估值

什么是FRA FRA&#xff08;Forward rate agrreement&#xff09;远期利率协议&#xff0c;是一种场外衍生品。FRA在0时刻确定&#xff0c;在未来时刻进行交易的协议。例如FRA3,6表示双方约定在3个月后以Rk的利率水平借款3个月。 应用场景&#xff1a;某公司未来3个月有融资需…

XWPFTemplate:基于Apache POI的Word文档模板引擎

1. 前言 在Java领域中&#xff0c;处理Office文档是一项常见的需求&#xff0c;尤其是对于生成报告、合同或其他结构化文档。Apache POI是一个广泛使用的库&#xff0c;用于读写Microsoft Office格式文件&#xff08;包括Word、Excel等&#xff09;。然而&#xff0c;直接操作…

Kotlin 中编写静态方法的方式详解

在 Kotlin 中&#xff0c;与 Java 不同&#xff0c;没有 static 关键字来定义静态方法。但是 Kotlin 提供了一种类似的机制来实现静态方法。本文将介绍 Kotlin 中编写静态方法的两种方式&#xff0c;并给出 Kotlin 和 Java 中的调用示例代码。 方式一&#xff1a;使用顶层函数…

Vue 3 中的 $emit 函数是如何工作的

在 Vue.js 框架中&#xff0c;组件间的通信是一个核心概念。Vue 提供了多种方式来实现父子组件间的通信&#xff0c;其中 $emit 是子组件向父组件发送消息的一种常用手段。在 Vue 3 中&#xff0c;随着 Composition API 的引入&#xff0c;$emit 的使用方式也发生了一些变化&am…

[HackMyVM] 靶场 Wave

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

OpenCV:开源计算机视觉的魔力之门

在当今这个信息爆炸的时代,图像和视频已经成为我们获取和传递信息的主要方式之一。从社交媒体上的照片分享,到安防监控、自动驾驶等领域的图像识别与处理,计算机视觉技术正日益改变着我们的生活。而在这场技术革命中,OpenCV(Open Source Computer Vision Library)这一开源…

Java JDBC JDBC事务管理 JDBC连接池(阿里巴巴Druid连接池、C3P0连接池) JDBC工具类

Java数据库连接 Java DataBase Connectivity。JDBC 规范定义接口&#xff0c;具体的实现由各大数据库厂商来实现。 JDBC可让Java通过程序操作关系型数据库&#xff0c;JDBC基于驱动程序实现与数据库的连接与操作。 JDBC 是 Java 访问数据库的标准规范&#xff0c;真正怎么操作…

C++ 滑动窗口

例1 209. 长度最小的子数组 ①窗口大小不固定 ②求最小长度 -> ret INT_MAX ③数组内的值都大于0&#xff0c; 符合单调性&#xff08;sum nums[right] -> sum增大&#xff09; while里面符合条件&#xff0c;在里面更改ret 参考代码 class Solution { public:i…

redis常见面试问题合集

什么是Redis&#xff1f; Redis是一个开源的、基于内存的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息队列。Redis支持多种数据类型&#xff0c;包括字符串、列表、集合、有序集合和哈希表。 Redis支持的数据类型有哪些&#xff1f; Redis支持五种主要的数据类…

【LeetCode打卡】Day25|216.组合总和III、17.电话号码的字母组合

学习目标&#xff1a; 216.组合总和III 17.电话号码的字母组合 学习内容&#xff1a; 216.组合总和III 题目链接 &&文章讲解 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回所有可能的有效…