当前位置: 首页 > news >正文

【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论

文章目录

  • 一、题目
  • 二、题解与代码
  • 三、神奇的BUG
    • 3.1 无法执行的 return 和 break 语句
    • 3.2 通过另一个 break 解决

一、题目

有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发,到达它的家。

跳蚤跳跃的规则如下:

  • 它可以 往前 跳恰好 a 个位置(即往右跳)。
  • 它可以 往后 跳恰好 b 个位置(即往左跳)。
  • 它不能 连续 往后跳 2 次。
  • 它不能跳到任何 forbidden 数组中的位置。
  • 跳蚤可以往前跳超过它的家的位置,但是它不能跳到负整数的位置。

给你一个整数数组 forbidden ,其中 forbidden[i] 是跳蚤不能跳到的位置,同时给你整数 abx ,请你返回跳蚤到家的最少跳跃次数。如果没有恰好到达 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 语句后,之前不能执行的 breakreturn 语句可以正常执行了!!!
    在这里插入图片描述
  • 严谨起见,我们用如下代码来查看到底是通过哪条语句的 break 退出循环的。
  • 显然是之前不能执行的那条。

在这里插入图片描述

  • 当然,新加入的 break 也是可执行的。

在这里插入图片描述

相关文章:

【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论

文章目录 一、题目二、题解与代码三、神奇的BUG3.1 无法执行的 return 和 break 语句3.2 通过另一个 break 解决 一、题目 有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发&#xff0c;到达它的家。 跳蚤跳跃的规则如下&#xff1a; 它可以 往前 跳恰好 a 个位…...

Calico IP In IP模拟组网

Calico IP In IP模拟组网 网络架构 模拟组网 先在k8s-master-1节点执行如下命令&#xff1a; # 创建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用户&#xff08;普通用户&#xff09;能够读写windows共享目录&#xff0c;比如查看文件、创建文件、修改文件、删除文件 # 让普通用户也可以正常读写 uidvalue and gidvalue Set the owner and group of the root of the file system (default: uidgid0, bu…...

drone的简单使用

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

day 52 | 84.柱状图中最大的矩形

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

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&#xff08;cuda11.2cudnn8&#xff09; 阅读提示&#xff1a; &#xff08;1&#xff09;Paddle的Serving项目中&#xff0c;在t…...

SOLIDWORKS工程图自动零件序号的极致体验

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

将ROS bag转成CSV

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

jframe生成柱状图片+图片垂直合并+钉钉机器人推送

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

如何用J-Link仿真PY32F003系列芯片

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

# Go学习-Day10

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

vue3:5、组合式API-reactive和ref函数

<script setup> /* reactive接收一个对象类型的数据&#xff0c;返回一个响应式的对象 *//*** ref:接收简单类型或复杂类型&#xff0c;返回一个响应式对象* 本质&#xff1a;是在原有传入数据的基础上&#xff0c;外层报了一层对象&#xff0c;包成了复杂类型* 底层&…...

Unity Inspector面板上显示Api

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

Redis功能实战篇之附近商户

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

selenium 自动化测试——元素定位

WebDriver 提供了8种元素的定位方法&#xff0c;分别是&#xff1a; id 定位&#xff1a;find_element(By.ID, "kw") name 定位: find_element(By.NAME, "") tag 定位: find_element(By.TAG, "") class 定位: find_element(By.CLASS_NAME, &quo…...

【JMeter】 二次开发插件开发 Dubbo 接口测试插件浅析

概述 在一些企业中&#xff0c;各类业务系统非常丰富&#xff0c;相互之间或对外提供很多的服务或接口这些服务或接口中&#xff0c;有很多是需要强契约约束的&#xff0c;服务的提供方、服务的使用方必须遵守相同契约这类服务最典型的就是RPC&#xff0c;其中应用广泛的有Dub…...

手机SSL证书认证失败是什么意思?

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

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 组每个同学的生日&#xff0c;并按照年龄从大到小的顺序排序。但 cjf 君最近作业很多&#xff0c;没有时间&#xff0c;所以请你帮她排序。 输入格式 输入共有 n 1 n 1 n1 行&#xff0c; 第 1 1 1 行为 OI 组总人数 n n n&#xff1b; …...

实战应用开发:基于快马平台构建集成heic转换功能的图片管理系统

最近在做一个图片管理系统的项目&#xff0c;其中遇到一个很实际的需求&#xff1a;用户上传的HEIC格式照片需要自动转换成通用的JPG格式。这个功能看似简单&#xff0c;但实际开发中需要考虑很多细节。下面分享下我在InsCode(快马)平台上实现这个功能的完整过程。 项目整体架构…...

第 6 次执行后,PostgreSQL 执行计划为何突变?

引言 在 PostgreSQL 中&#xff0c;预处理语句通常用于提升性能并防止 SQL 注入。但一个不易察觉的行为是&#xff1a;查询规划器会在执行达到特定次数后自动改变执行计划。 这种变化往往令人困惑——SQL 本身未发生变化&#xff0c;执行计划却突然发生切换&#xff0c;有时甚至…...

嵌入式轻量级数值优化库:面向MCU的确定性参数寻优方案

1. 项目概述Optimization 是一个面向嵌入式平台的轻量级数值优化库&#xff0c;专为 Arduino 及兼容 MCU&#xff08;如 STM32、ESP32、nRF52 等&#xff09;设计&#xff0c;其核心目标是在资源受限环境下&#xff0c;对用户定义的单目标标量函数 f(x₁, x₂, ..., xₙ) 进行参…...

Transformer架构详细解读(教程向)

说明&#xff1a;本文内容多来自尚硅谷自然语言处理课程讲义&#xff0c;图文并茂&#xff0c;有图有公式&#xff0c;内容质量很高&#xff0c;在此表示感谢&#xff01; 一、问题背景 在大模型奠基之作Transformer出来之前&#xff0c;传统的序列建模都是以RNN&#xff0c;…...

为什么你的C++量子模拟器总在2^10后崩溃?内存优化、张量压缩与SIMD加速三重方案揭秘

第一章&#xff1a;量子模拟器崩溃现象与2^10内存临界点的本质剖析当量子模拟器在经典硬件上运行含10个量子比特的电路时&#xff0c;常在初始化或状态演化阶段发生静默崩溃——进程异常终止、无堆栈回溯、仅返回 SIGSEGV 或 OOM Killer 日志。这一现象并非随机故障&#xff0c…...

功率半导体技术:GaN与SiC的性能对比与应用指南

1. 功率半导体技术演进背景在电力电子领域&#xff0c;功率半导体器件的发展经历了从硅(Si)到第三代半导体材料的重大跨越。作为工程师&#xff0c;我们正站在技术革新的关键节点&#xff1a;氮化镓(GaN)和碳化硅(SiC)这两种宽禁带半导体材料正在重塑功率转换的格局。传统硅基功…...

UNIX设计哲学:一切皆文件的原理与应用

1. UNIX 设计哲学的核心&#xff1a;"一切皆文件"在计算机操作系统的演进历程中&#xff0c;UNIX系统以其简洁而强大的设计哲学独树一帜。作为一名长期与UNIX/Linux系统打交道的开发者&#xff0c;我深刻体会到"一切皆文件"这一理念对整个计算机领域产生的…...

开源工具DLSS Swapper:提升游戏帧率的智能版本管理方案

开源工具DLSS Swapper&#xff1a;提升游戏帧率的智能版本管理方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 在3A游戏画面日益精美的今天&#xff0c;如何在不牺牲画质的前提下提升帧率成为玩家面临的普遍挑战。…...

嵌入式开发中静态代码扫描的必要性与实践

1. 为什么嵌入式开发需要静态代码扫描&#xff1f; 在嵌入式系统开发中&#xff0c;代码质量直接关系到产品的稳定性和安全性。由于嵌入式设备通常部署在关键基础设施、工业控制或消费电子产品中&#xff0c;代码缺陷可能导致严重后果。静态代码扫描作为代码质量保障的重要手段…...

深入解析LCD面板Gamma校准:从原理到自动化调试实践

1. Gamma校准的前世今生&#xff1a;从CRT到LCD的视觉革命 第一次接触Gamma校准时&#xff0c;我正对着两台显示器发愣——同样的设计稿在CRT显示器上色彩饱满&#xff0c;到了LCD屏幕却像蒙了层灰。这个困扰无数设计师的问题&#xff0c;背后正是Gamma值在作祟。早年的CRT显示…...