【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论
文章目录
- 一、题目
- 二、题解与代码
- 三、神奇的BUG
- 3.1 无法执行的 return 和 break 语句
- 3.2 通过另一个 break 解决
一、题目
有一只跳蚤的家在数轴上的位置 x
处。请你帮助它从位置 0
出发,到达它的家。
跳蚤跳跃的规则如下:
- 它可以 往前 跳恰好
a
个位置(即往右跳)。 - 它可以 往后 跳恰好
b
个位置(即往左跳)。 - 它不能 连续 往后跳
2
次。 - 它不能跳到任何
forbidden
数组中的位置。 - 跳蚤可以往前跳超过它的家的位置,但是它不能跳到负整数的位置。
给你一个整数数组 forbidden
,其中 forbidden[i]
是跳蚤不能跳到的位置,同时给你整数 a
, b
和 x
,请你返回跳蚤到家的最少跳跃次数。如果没有恰好到达 x
的可行方案,请你返回 -1
。
示例一:
输入:forbidden = [14,4,18,1,15], a = 3, b = 15, x = 9
输出:3
解释:往前跳 3 次(0 -> 3 -> 6 -> 9),跳蚤就到家了。
示例二:
输入:forbidden = [8,3,16,6,12,20], a = 15, b = 13, x = 11
输出:-1
示例三:
输入:forbidden = [1,6,2,14,5,17,4], a = 16, b = 9, x = 7
输出:2
解释:往前跳一次(0 -> 16),然后往回跳一次(16 -> 7),跳蚤就到家了。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-jumps-to-reach-home/
题目著作权归领扣网络所有。仅供个人学习,非商用。
二、题解与代码
class Solution {public int minimumJumps(int[] forbidden, int a, int b, int x) {Queue<int[]> queue = new ArrayDeque<int[]>();Set<Integer> visited = new HashSet<Integer>();queue.offer(new int[]{0, 1, 0});visited.add(0);int lower = 0, upper = Math.max(Arrays.stream(forbidden).max().getAsInt() + a, x) + b;Set<Integer> forbiddenSet = new HashSet<Integer>();for (int position : forbidden) {forbiddenSet.add(position);}while (!queue.isEmpty()) {int[] arr = queue.poll();int position = arr[0], direction = arr[1], step = arr[2];if (position == x) {return step;}int nextPosition = position + a;int nextDirection = 1;if (lower <= nextPosition && nextPosition <= upper && !visited.contains(nextPosition * nextDirection) && !forbiddenSet.contains(nextPosition)) {visited.add(nextPosition * nextDirection);queue.offer(new int[]{nextPosition, nextDirection, step + 1});}if (direction == 1) {nextPosition = position - b;nextDirection = -1;if (lower <= nextPosition && nextPosition <= upper && !visited.contains(nextPosition * nextDirection) && !forbiddenSet.contains(nextPosition)) {visited.add(nextPosition * nextDirection);queue.offer(new int[]{nextPosition, nextDirection, step + 1});}}}return -1;}
}
作者:力扣官方题解
链接:https://leetcode.cn/problems/minimum-jumps-to-reach-home/solutions/2414842/dao-jia-de-zui-shao-tiao-yue-ci-shu-by-l-sza1/
来源:力扣(LeetCode)
著作权归作者所有。仅供个人学习,非商用。
三、神奇的BUG
注:本部分仅阐述发现的 BUG,本部分代码并不是题解。
3.1 无法执行的 return 和 break 语句
- 在 LeetCode 的官网上,下图红框内的
if
语句在判断结果为true
的条件下不会执行代码块中的return
语句!!! - 在下图中可以很清楚地看到
(tmp[0] == x)
在第 4 次循环时,输出的结果为true
,但并没有执行return
操作。 - 把
Solution
类的代码 直接复制 到 IDEA 中则可以执行!!!
- IDEA 中的执行结果如下图所示:
- 将
return
换成break
语句也同样无法执行:
大家有遇到过类似的 BUG 吗?还是说有什么我没注意到的问题呢?
3.2 通过另一个 break 解决
- 在同层次的另一个
if
语句的代码块中加入break
语句后,之前不能执行的break
和return
语句可以正常执行了!!!
- 严谨起见,我们用如下代码来查看到底是通过哪条语句的
break
退出循环的。 - 显然是之前不能执行的那条。
- 当然,新加入的
break
也是可执行的。
相关文章:

【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论
文章目录 一、题目二、题解与代码三、神奇的BUG3.1 无法执行的 return 和 break 语句3.2 通过另一个 break 解决 一、题目 有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发,到达它的家。 跳蚤跳跃的规则如下: 它可以 往前 跳恰好 a 个位…...

Calico IP In IP模拟组网
Calico IP In IP模拟组网 网络架构 模拟组网 先在k8s-master-1节点执行如下命令: # 创建veth-pair设备对ip link add veth1 type veth peer name eth0# 创建ns1网络命名空间ip netns add ns1# 将eth0网卡插入ns1网络命名空间ip link set eth0 netns ns1# 为ns1网…...

在linux上挂载windows共享目录
挂载要求 非root用户(普通用户)能够读写windows共享目录,比如查看文件、创建文件、修改文件、删除文件 # 让普通用户也可以正常读写 uidvalue and gidvalue Set the owner and group of the root of the file system (default: uidgid0, bu…...

drone的简单使用
(一)简介 Drone 是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试、构建、发布。每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构建环境并保证隔离。开发者只需在项目中包含 .drone.yml文件&…...

day 52 | 84.柱状图中最大的矩形
84.柱状图中最大的矩形 本题跟接雨水的思路是差不多的,不同的是接雨水找到的凹,这个找的是凸。因此是找到左右第一个比他小的值。因此单调栈中的顺序是从栈头到栈尾单调增。 需要注意的是,为了防止给定的元素是单调增或者单调减,…...

BUUCTF刷题十一道(08)
文章目录 [HITCON 2017]SSRFme[b01lers2020]Welcome to Earth[CISCN2019 总决赛 Day2 Web1]Easyweb[SWPUCTF 2018]SimplePHP[NCTF2019]SQLi[网鼎杯 2018]Comment[NPUCTF2020]ezinclude[HarekazeCTF2019]encode_and_encode[CISCN2019 华东南赛区]Double Secret[网鼎杯2018]Unfin…...

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像
快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像 项目介绍需要重点关注的几个文件构建cpu版本的docker构建gpu版本的docker(cuda11.2cudnn8) 阅读提示: (1)Paddle的Serving项目中,在t…...

SOLIDWORKS工程图自动零件序号的极致体验
在装配体工程图中零件序号的标注要求不能漏标、要和明细表项目相对应、位置适当并且要按序排列。 这些要求看似简单,但是却需要极大的精力去完成。当然在SOLIDWORKS中这些问题都被很好的解决了,这也是本次分享的内容。 自动序号标注 1) 在进行尺寸标注前…...

将ROS bag转成CSV
在放了bag包的工作空间下,执行如下命令 rostopic echo -b recorded_bag.bag -p /topic_name > csv_file.csv # -b表示接bag包 # -p表示将消息转为适合matlab或octave plot画图的格式 # recorded_bag.bag是记录下来的bag包 # /topic_name,以/开头&…...

jframe生成柱状图片+图片垂直合并+钉钉机器人推送
需求: 后端根据数据自动生成2个图片,然后把两张图片合并成一张图片,再发到钉钉群里,涉及到定时生成和推送,当时我们测试同事说他们写定时脚本放到服务器上,然后让我提供生成图片的方法和钉钉机器人的逻辑 天…...

如何用J-Link仿真PY32F003系列芯片
在用国产ARM芯片,仿真和烧录是必须的,但KEIL MDK也支持国产芯片在线仿真和下载。相信大家和我一样,苦于不会设置J-Link走了很多弯路。不管你用盗版的,还是正版的,都支持在线仿真和下载,只要是ARM核…...

# Go学习-Day10
Go学习-Day10 个人博客:CSDN博客 反射 编写函数适配器,序列化和反序列话可以用到 反射可以在运行时,动态获取变量的各种信息,例如类型,结构体本身的信息,修改变量的值,调用关联的方法 反射是…...

vue3:5、组合式API-reactive和ref函数
<script setup> /* reactive接收一个对象类型的数据,返回一个响应式的对象 *//*** ref:接收简单类型或复杂类型,返回一个响应式对象* 本质:是在原有传入数据的基础上,外层报了一层对象,包成了复杂类型* 底层&…...

Unity Inspector面板上显示Api
serializeField】——将私有类型和保护类型可视化到面板上【System.serializeField】——将自定义类型可视化到面板上【HideIninspector】——将公共变量隐藏【Header(“分组说明”)】——将可视化变量进行分组【Tooltip(“内容说明”&#x…...

Redis功能实战篇之附近商户
在互联网的app当中,特别是像美团,饿了么等app。经常会看到附件美食或者商家, 当我们点击美食之后,会出现一系列的商家,商家中可以按照多种排序方式,我们此时关注的是距离,这个地方就需要使用到我…...

selenium 自动化测试——元素定位
WebDriver 提供了8种元素的定位方法,分别是: id 定位:find_element(By.ID, "kw") name 定位: find_element(By.NAME, "") tag 定位: find_element(By.TAG, "") class 定位: find_element(By.CLASS_NAME, &quo…...

【JMeter】 二次开发插件开发 Dubbo 接口测试插件浅析
概述 在一些企业中,各类业务系统非常丰富,相互之间或对外提供很多的服务或接口这些服务或接口中,有很多是需要强契约约束的,服务的提供方、服务的使用方必须遵守相同契约这类服务最典型的就是RPC,其中应用广泛的有Dub…...

手机SSL证书认证失败是什么意思?
手机SSL证书认证失败是指在使用手机设备浏览网站时,由于SSL证书的认证问题,导致无法建立安全的加密连接。本文将详细介绍手机SSL证书认证失败的含义、可能的原因以及解决方法,帮助用户了解并解决该问题,以确保手机端浏览的数据传输…...

PXE网络批量装机(centos7)
目录 前言 一、实验拓扑图 二、PXE的组件 三、配置PXE装机服务器 1、设置防火墙、selinux 2.安装、启动vsftp 3、拷贝系统文件到/var/ftp用于装机 4、配置tftp 5、准备pxelinx.0文件、引导文件、内核文件 6、配置本机IP 7、配置DHCP服务 8、创建default文件 四、配…...

P1104 生日
题目描述 cjf 君想调查学校 OI 组每个同学的生日,并按照年龄从大到小的顺序排序。但 cjf 君最近作业很多,没有时间,所以请你帮她排序。 输入格式 输入共有 n 1 n 1 n1 行, 第 1 1 1 行为 OI 组总人数 n n n; …...

计算机网络复习大纲
第一章 计算机网络概述 一,网络发展的形态 了解:当前网络的组成形态: 二,计算机网络的定义 掌握 网络的物理组成实体 网络的工作方式 网络组建的目的 三,通过网络定义 我们如何学习网络 物理实体如何构成&…...

Linux:进程(概念)
学习目标 1.认识冯诺依曼系统 2.认识操作系统概念与定位 (系统调用接口) 3.理解进程的概念(PCB) 4.理解进程的状态(fork创建进程,僵尸进程及孤儿进程) 5.了解进程的调度(优先级,竞争性ÿ…...

智能机器人:打造自动化未来的关键技术
文章目录 1. 智能机器人的基本概念2. 智能机器人的关键技术2.1 机器视觉2.2 机器学习与深度学习2.3 传感器技术 3. 智能机器人的应用领域3.1 制造业3.2 医疗保健3.3 农业3.4 服务业 4. 智能机器人的未来趋势4.1 自主决策能力的提升4.2 协作与互操作性4.3 个性化定制4.4 环境感知…...

大数据(七):Pandas的基础应用详解(四)
专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对…...

【1day】万户协同办公平台 ezoffice未授权访问漏洞学习
注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录...

适配器模式:如何让不兼容的接口变得兼容
在软件开发中,我们经常会遇到这样的情况:我们需要使用一个现有的类或者接口,但它与我们系统的目标接口不兼容,而我们又不能修改它。这时候,我们该怎么办呢?大多数情况下我们都可以使用适配器模式来解决这个…...

sentinel熔断报java.lang.reflect.UndeclaredThrowableException
背景:内部要进行应用jdk&springboot升级,因此也需要将Spring Cloud Hystrix 替换成alibaba sentinel。 依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</a…...

工业4G路由器的户外组网与无人值守场景应用
工业4G路由器是专为不便电缆布线的工业或日晒雨淋网络不畅的户外环境所设计的网络设备。它能够在没有光纤宽带的情况下使用插卡的方式提供4G或无线WiFi的网络支持。具备工业级防水功能,能够在户外环境下进行网络部署,并实现无人值守运行。工业4G路由器还…...

中移粤港澳大湾区创新研究院、南湖研究院类脑实验室面试(部分)
中移粤港澳大湾区创新研究院 reids热key的高并发量,导致此redis节点的cpu使用率爆满,有什么优化方案?高并发情况下为了保证平台正常运行,怎么设置平台的监控和告警 南湖研究院类脑实验室 笔试通过后,面试无后续...

API 自动化测试难点总结与分享
API自动化测试的难点包括: 接口的参数组合较多,需要覆盖各种可能的情况。接口的状态和数据关联较多,需要验证返回结果是否符合预期。接口的并发访问和性能测试较为复杂,需要合理规划和调度测试策略。接口的安全性和权限控制较为重…...