【每日一题】1041. 困于环中的机器人
1041. 困于环中的机器人 - 力扣(LeetCode)
在无限的平面上,机器人最初位于
(0, 0)处,面朝北方。注意:
- 北方向 是y轴的正方向。
- 南方向 是y轴的负方向。
- 东方向 是x轴的正方向。
- 西方向 是x轴的负方向。
机器人可以接受下列三条指令之一:
"G":直走 1 个单位"L":左转 90 度"R":右转 90 度机器人按顺序执行指令
instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回
true。否则,返回false。示例 1:
输入:instructions = "GGLLGG" 输出:true 解释:机器人最初在(0,0)处,面向北方。 “G”:移动一步。位置:(0,1)方向:北。 “G”:移动一步。位置:(0,2).方向:北。 “L”:逆时针旋转90度。位置:(0,2).方向:西。 “L”:逆时针旋转90度。位置:(0,2)方向:南。 “G”:移动一步。位置:(0,1)方向:南。 “G”:移动一步。位置:(0,0)方向:南。 重复指令,机器人进入循环:(0,0)——>(0,1)——>(0,2)——>(0,1)——>(0,0)。 在此基础上,我们返回true。示例 2:
输入:instructions = "GG" 输出:false 解释:机器人最初在(0,0)处,面向北方。 “G”:移动一步。位置:(0,1)方向:北。 “G”:移动一步。位置:(0,2).方向:北。 重复这些指示,继续朝北前进,不会进入循环。 在此基础上,返回false。示例 3:
输入:instructions = "GL" 输出:true 解释:机器人最初在(0,0)处,面向北方。 “G”:移动一步。位置:(0,1)方向:北。 “L”:逆时针旋转90度。位置:(0,1).方向:西。 “G”:移动一步。位置:(- 1,1)方向:西。 “L”:逆时针旋转90度。位置:(- 1,1)方向:南。 “G”:移动一步。位置:(- 1,0)方向:南。 “L”:逆时针旋转90度。位置:(- 1,0)方向:东方。 “G”:移动一步。位置:(0,0)方向:东方。 “L”:逆时针旋转90度。位置:(0,0)方向:北。 重复指令,机器人进入循环:(0,0)——>(0,1)——>(- 1,1)——>(- 1,0)——>(0,0)。 在此基础上,我们返回true。
class Solution {char location = 'N';int x=0,y=0;public boolean isRobotBounded(String instructions) {int len = instructions.length();for(int j = 0 ;j < 4 ; ++j)for(int i = 0; i < len ; ++i) {move(instructions.charAt(i));}if(x==0&&y==0) return true;return false;}public void move (char a) {if(a == 'L') {switch(location) {case 'N' : location = 'W'; break;case 'W' : location = 'S'; break;case 'S' : location = 'E'; break;case 'E' : location = 'N'; break;}} else if(a == 'R') {switch(location) {case 'N' : location = 'E'; break;case 'W' : location = 'N'; break;case 'S' : location = 'W'; break;case 'E' : location = 'S'; break;}} else if(a == 'G') {switch(location) {case 'N' : y+=1; break;case 'W' : x-=1; break;case 'S' : y-=1; break;case 'E' : x+=1; break;}}}
}
这道题最主要在于理解“循环”。环,不是有环就可以,而是要存在让机器人走不出来的环。再者,题目中还说到,机器人会不断重复执行一开始给出的指令序列。那么,只在走动过程中有环行不行呢?答案是不行的。必须要能以(0,0)开头组成一个大环,如果只是在行进中走入一个环中,那么下一次循环的时候一定会走出来的,例如下图:

所以,关键就在于能不能在行走过程中的最后一个指令回到(0,0)。行走过程只需要模拟即可。模拟的同时对x,y进行加减操作。但是,这里还存在一个问题,就是序列不够的情况,有可能一个序列只有“GL”两个,或者只有“GLGL”两个。如果没有行走的指令,那肯定会循环,但一旦有行走的指令,即便指令再怎么少,最多只需要循环4次就可以知道到底能否回到原点构成环。所以,只需要将指令序列循环4次,再去判断x,y即可。
该题的题解则是对执行一次指令之后机器人所处的方向和位置进行判断,以此来推断是否可以组成环,大家做完题也可以去看看。
相关文章:
【每日一题】1041. 困于环中的机器人
1041. 困于环中的机器人 - 力扣(LeetCode) 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意: 北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。 机器人可以接受下列三条指令之…...
C# 采用3DES-MAC进行签名 base64解码与编码
** 3DES-MAC ** 3DES-MAC(Triple Data Encryption Standard Message Authentication Code)是一种消息认证码(MAC)算法,用于验证消息的完整性和真实性。3DES-MAC使用了3DES(Triple Data Encryption Standa…...
AI绘画:StableDiffusion实操教程-完美世界-魔女(附高清图下载)
前段时间我分享了StableDiffusion的非常完整的教程:“AI绘画:Stable Diffusion 终极宝典:从入门到精通 ” 尽管如此,还有读者反馈说,尽管已经成功安装,但生成的图片与我展示的结果相去甚远。真实感和质感之…...
python excel 读取及写入固定格式
import xlrd import xlwt import re import pandas as pd from datetime import date,datetimefile_path "C:\\Users\\function_model.xls" def readexcel():df pd.read_excel(file_path ,"配置")# e_id# id# expression# name# freq# column_data df[e…...
SQL Server进阶教程读书笔记
最近把SQL Server进阶教程重新读了一遍,顺便整理了一下书本中的知识点 1.关键知识点 CASE WHEN ❑ 高手使用select做分支,新手用where和having做分支 ❑ 要写ELSE,要写END,避免未匹配上得到NULL ❑ check到底怎…...
DHTMLX Gantt 8.0.5 Crack -甘特图
8.0.5 2023 年 9 月 1 日。错误修复版本 修复 修复通过gantt.getGanttInstance配置启用扩展而触发的错误警告修复启用skip_off_time配置时gantt.exportToExcel()的不正确工作示例查看器的改进 8.0.4 2023 年 7 月 31 日。错误修复版本 修复 修复数据处理器不跟踪资源数据…...
RHCA之路---EX280(5)
RHCA之路—EX280(5) 1. 题目 Using the example files from the wordpress directory under http://materials.example.com/exam280/wordpress create a WordPress application in the farm project For permanent storage use the NFS shares /exports/wordpress and /export…...
”轻舟已过万重山“-----我回归更新了-----
嘿,朋友们,很久不见,甚是想念,经历过漫长的暑期生活,也许你已然收获满满。有可能你拿到了那梦寐以求的机动车行驶证,开着家长的小车在道路上自由的兜风;有可能你来了一场说走就走的旅行…...
win11右键菜单恢复win10风格
按 winx 输入以下命令 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve...
Nginx安装及配置负载均衡
文章目录 官网下载Nginx解压安装常用命令配置负载均衡七层负载均衡nginx的负载均衡语法nginx的负载均衡策略故障下线和备份服务设置proxy_pass参数 官网下载Nginx http://nginx.org/en/download.html 注:下载稳定版,即Stateable Version的,…...
C# OpenCvSharp 通道分离
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions;namespac…...
oracle 自定义存储过程(非常简单明了)
语法说明 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN %TYPE, 参数2 IN %TYPE, 参数3 OUT %TYPE) IS 变量1 %TYPE; 变量2 %TYPE; BEGIN存储过程执行语句块 END 存储过程名字;举例说明 1.举一个简单的例子 定义存储过程 easyProcedure 入参为 两个数 出参为 他们的…...
layui--记录
layui 行点击事件:点了没反应? //监听行工具事件layui.table.on(tool(demo), function (obj) {//alert(222) });原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。 <table id"demo" lay-filter"dem…...
【校招VIP】测试技术考点之单元测试集成测试
考点介绍: 单元测试,集成测试的区别是:方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…...
【Redis专题】Redis核心数据结构实战与高性能原理解析
目录 前言课程内容一、redis数据类型1.1 字符串(string)类型:比较简单的一种使用存储模型常用命令:(截取自【菜鸟教程】)部分演示应用场景 1.2 哈希(hash)类型:同类数据归…...
常见的几种排序算法
目录 一、插入排序 1、直接插入排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、希尔排序 2.1、排序方法 2.2、图解分析 2.3、代码实现 二、选择排序 1、直接选择排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、堆排序 2.1、排序方法 2.2、图解分析 …...
动态贴纸、美颜SDK与AR:创造独特的互动体验
目前,动态贴纸、美颜SDK、增强现实(AR)等技术是比较热门的话题,它们所结合的新兴玩法更是收到大家推崇,正潜移默化的改变我们与数字世界互动的方式。 一、动态贴纸:个性化互动的开始 动态贴纸,…...
〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇
✨ 目录 🎈 反推提示词 / Tagger🎈 反推提示词 Tagger 使用🎈 英文提示词自动补全 / Booru tag🎈 英文提示词自动补全 Booru tag 使用🎈 中文提示词自动补全 / tagcomplete🎈 中文提示词自动补全 tagcomple…...
如何实现响应式布局
要实现响应式布局,您可以采用以下方法: 视口设置: 在HTML的<head>部分中使用meta标签设置视口: <meta name"viewport" content"widthdevice-width, initial-scale1.0">使用百分比: 使…...
HTML <tr> 标签
实例 一个简单的 HTML 表格,包含两行两列: <table border="1"><tr><th>Month</th><th>Savings</th></tr><tr><td>January</td><td>$100</td></tr> </table>定义和用法 &l…...
Highlight.js在Vue3中的性能优化指南:按需加载 vs 全量引入
Highlight.js在Vue3中的性能优化实战:从全量引入到精准加载 当你的Vue3项目需要展示代码片段时,Highlight.js无疑是语法高亮的首选方案。但在大型应用中,直接全量引入这个强大的工具可能会让你的打包体积意外膨胀——完整的Highlight.js包含超…...
AudioSeal保姆级教学:Gradio界面多文件批量上传与异步检测队列设置
AudioSeal保姆级教学:Gradio界面多文件批量上传与异步检测队列设置 1. 引言 你是不是遇到过这样的场景?手里有一堆音频文件,需要挨个检查它们是不是AI生成的,或者想给一批音频文件批量加上水印。手动操作不仅效率低,…...
剧本杀教程生成指南2025,解析,轻松掌握创作技巧
剧本杀教程生成指南2025,解析,轻松掌握创作技巧剧本杀作为一种新兴的娱乐方式,近年来在全球范围内迅速流行。随着越来越多的人加入到剧本杀的创作和体验中,如何高效地创作出高质量的剧本成为了一个热门话题。本文将为你提供一份详…...
放假给大家推荐一些孩子的资料,有了这些资源简直太好了!
👨👩👧有娃家庭必收!这批教育资源太香了数学思维 / 英语启蒙 / 亲子电影 / 绘画手工 / 睡前故事全部夸克网盘直取,保存即用阅读约 4 分钟 建议收藏备用家里有娃的,这批资源是真的用得上。 从英语…...
OpenClaw定时任务:千问3.5-9B每日早报自动推送
OpenClaw定时任务:千问3.5-9B每日早报自动推送 1. 为什么需要自动化早报推送 每天早上打开电脑第一件事,就是手动收集行业新闻、技术动态和日程提醒,再整理成早报发到团队群。这种重复劳动持续三个月后,我开始思考:能…...
终极ChatTTS语音合成指南:3分钟搭建本地AI语音系统 [特殊字符]
终极ChatTTS语音合成指南:3分钟搭建本地AI语音系统 🎤 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthes…...
SecGPT-14B API保护:防止OpenClaw任务过度消耗模型资源
SecGPT-14B API保护:防止OpenClaw任务过度消耗模型资源 1. 为什么需要API保护机制 上周我在本地部署了SecGPT-14B模型,并尝试通过OpenClaw实现自动化安全报告生成。凌晨3点突然收到服务器告警——模型服务因资源耗尽崩溃了。检查日志发现,O…...
新手入门指南:基于快马生成代码学习注册表单开发与验证
新手入门指南:基于快马生成代码学习注册表单开发与验证 作为一个前端新手,我最近在学习如何开发一个完整的注册表单页面。正好用InsCode(快马)平台尝试实现了一个谷歌风格的账号注册页面,整个过程收获很大,下面分享我的学习心得。…...
[具身智能-230]:大模型编程的一个最佳实践:先通过自然语言让大模型编写Python语言代码,功能和性能调通后,再让大模型把python程序转换成C++或其他语言的程序
这种“Python 原型验证 C 性能落地”的开发模式,完美契合了大模型(LLM)的能力特点以及现代软件工程的需求。结合最新的行业实践和技术原理,我为你深度解析为什么这种工作流如此有效,以及在实际操作中需要注意的关键点…...
Go语言的gRPC服务开发
Go语言的gRPC服务开发 1. gRPC简介 gRPC是Google开发的高性能、开源的RPC框架,基于HTTP/2协议和Protocol Buffers序列化格式。它支持多种语言,包括Go、Java、C、Python等,非常适合构建微服务架构。 gRPC的优势 高性能:基于HTTP/2协…...
