【Java|golang】1041. 困于环中的机器人

news2024/12/24 22:06:01

在无限的平面上,机器人最初位于 (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。

提示:

1 <= instructions.length <= 100
instructions[i] 仅包含 ‘G’, ‘L’, ‘R’

思路
如果最终面朝方向与原始面朝方向垂直,那么机器人走四次instructions会回到原点形成闭环。(四个向量组成一个正方形)
如果最终面朝方向是原始面朝方向的反方向,则下一次instructions必定会到原点。(两个方向相反的向量)
如果面朝方向不变,向量不是零则发散,是零则一直在原点。

    public boolean isRobotBounded(String instructions) {
       int[][] dirs=new int[][]{{0,1},{1,0},{0,-1},{-1,0}};
       int x=0,y=0,dir=0;
        for (char c : instructions.toCharArray()) {
            if (c=='G'){
                x+=dirs[dir][0];
                y+=dirs[dir][1];
            }else if (c=='L'){
                dir=(dir+3)%4;
            }else {
                dir=(dir+1)%4;
            }
        }
        if (dir==0){
            return x==0&&y==0;
        }
       return true;
    }

在这里插入图片描述

func isRobotBounded(instructions string) bool {
	dirs:=[][]int{{0,1},{1,0},{0,-1},{-1,0}}
	x,y,dir:=0,0,0
	for _, v := range instructions {
		if v=='G'{
			x+=dirs[dir][0]
			y+=dirs[dir][1]
		}else if v=='L'{
			dir=(dir+3)%4
		}else {
			dir=(dir+1)%4
		}
	}
	if dir==0{
		return x==0&&y==0
	}
	return true
}

在这里插入图片描述

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

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

相关文章

Markdown 语法大全

Markdown是一种轻量级标记语言&#xff0c;常用于撰写博客、文档、论文等。它可以让你使用易读易写的纯文本格式来编写文档&#xff0c;然后通过转换成有效的HTML文档进行发布。以下是Markdown常用的语法&#xff1a; 这里写目录标题标题列表引用一级引用嵌套引用粗体和斜体删除…

技术复盘(1)--redis

技术复盘--redis技术复盘(1)--redis资料地址准备工作发展史redis-windowsredis-windows-说明redis-centos7安装jdk安装redisredis-key基本命令redis-string命令redis-list命令redis-set命令redis-hash命令redis-zset命令redis-geospatial命令redis-hyperloglog命令redis-bitmap…

【Linux驱动开发】024 INPUT子系统

一、前言 按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c;Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备&#xff0c;只是在此基础上套上了 input 框架&#xff0c;用户只需要负责上报输入事件&#xff0c;比如…

文本聚类与摘要,让AI帮你做个总结

你好&#xff0c;我是徐文浩。 上一讲里&#xff0c;我们用上了最新的ChatGPT的API&#xff0c;注册好了HuggingFace的账号&#xff0c;也把我们的聊天机器人部署了出去。希望通过这个过程&#xff0c;你对实际的应用开发过程已经有了充足的体验。那么这一讲里&#xff0c;我们…

[目标识别-论文笔记]Object Detection in Videos by Short and Long Range Object Linking

文章标题&#xff1a;2018_Cite13_Tang——Object Detection in Videos by Short and Long Range Object Linking 这篇论文也被叫做“2019_Cite91_TPAMI_Tang——Object Detection in Videos by High Quality Object Linking” 如果这篇博客对你有帮助&#xff0c;希望你 点赞…

ES索引库操作

文章目录1、对索引库的操作&#xff1a;创建、删除、查看2、文档操作3、 RestClient操作索引库4、利用RestClient实现文档的CRUD5、 批量导入功能有了索引库相当于数据库database&#xff0c;而接下来&#xff0c;就是需要索引库中的类型了&#xff0c;也就是数据库中的表&…

nssctf web入门(1)

这里通过nssctf的题单web安全入门来写&#xff0c;会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列&#xff0c;之后会一直出这个题单的解析&#xff0c;题目一共有28题&#xff0c;打算写10篇。 [SWPUCTF 2021 新生赛]jicao [SWPUCTF 2021 新生赛]j…

RL4RS,离线强化学习,无模型强化学习等等资源汇总

发现好文章&#xff1a; 强化学习推荐系统综述&#xff1a;Reinforcement Learning based Recommender Systems: A Survey 强化学习图鉴&#xff5c;你与最优策略之间&#xff0c;可能还差一本离线强化学习秘籍 科学应用强化学习创新论文洞察 https://hub.baai.ac.cn/view/18…

【论文精读】PP-YOLOE: An evolved version of YOLO

文章目录前言一、可扩展的 Backbone 和 Neck二、更高效的标签分配策略 TAL (Task Alignment Learning)三、更简洁有效的 ET-Head (Efficient Task-aligned Head)前言 百度飞桨团队发布了 PP-YOLOE&#xff0c;与其他 YOLO 系列算法相比&#xff0c;其具有更强的性能、更丰富灵…

8.2 正态总体的参数的检验

学习目标&#xff1a; 如果我要学习正态总数的参数检验&#xff0c;我会按照以下步骤进行学习&#xff1a; 学习正态分布的基本知识&#xff1a;正态分布是统计学中非常重要的概率分布之一&#xff0c;掌握其基本知识包括概率密度函数、期望值、方差、标准差等是非常重要的。 …

Prometheus - Grafana 监控 MySQLD Linux服务器 demo版

目录 首先是下载Prometheus 下载和安装 配置Prometheus 查看监控数据 监控mysql demo 部署 mysqld_exporter 组件 配置 Prometheus 获取监控数据 -------------------------------------- 安装和使用Grafana 启动Grafana -------------------------------------- 配…

MySQL5.5安装图解

一、MYSQL的安装 &#xff11;、打开下载的mysql安装文件mysql-5.5.27-win32.zip&#xff0c;双击解压缩&#xff0c;运行“setup.exe” &#xff12;、选择安装类型&#xff0c;有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项&#xff0c;选择“Cu…

VSD Viewer for Mac,Visio绘图文件阅读器

VSD Viewer for Mac版是mac上一款非常强大的Visio绘图文件阅读器&#xff0c;它为打开和打印Visio文件提供了简单的解决方案。可以显示隐藏的图层&#xff0c;查看对象的形状数据&#xff0c;预览超链接。还可以将Visio转换为包含图层&#xff0c;形状数据和超链接的PDF文档。 …

【状态估计】基于增强数值稳定性的无迹卡尔曼滤波多机电力系统动态状态估计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux 进程管理之四大名捕

一、四大名捕 四大名捕&#xff0c;最初出现于温瑞安创作的武侠小说&#xff0c;是朝廷中正义力量诸葛小花的四大徒弟&#xff0c;四人各怀绝技&#xff0c;分别是轻功暗器高手 “无情”、内功卓越的高手“铁手”、腿功惊人的“追命” 和剑法一流的“冷血”。 本文四大名捕由…

【Unity入门】11.脚本控制物体旋转

【Unity入门】脚本控制物体旋转 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;控制物体自转 &#xff08;1&#xff09;创建RotateLogic脚本 上一篇文章我们学习了如何在脚本中获取物体对象…

【前端工具】使用真机在chrome远程调试

手机端需要做的事 手机上下载chrome浏览器 手机开启“开发者模式” 具体步骤各个品牌手机不太一样&#xff0c;华为手机为例&#xff1a; 打开手机上的 “设置” 图标&#xff0c; 进入最下方 “系统” 选项&#xff0c; 再点击最上方 “关于手机”&#xff0c; 接着连续点击 …

(十八)排序算法-计数排序

1 基本介绍 1.1 概述 计数排序是一个非基于比较的排序算法&#xff0c;元素从未排序状态变为已排序状态的过程&#xff0c;是由额外空间的辅助和元素本身的值决定的。该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度…

一文解读基于PaddleSeg的钢筋长度超限监控方案

项目背景 钢铁厂生产钢筋的过程中会存在部分钢筋长度超限的问题&#xff0c;如果不进行处理&#xff0c;容易造成机械臂损伤。因此&#xff0c;需要通过质检流程&#xff0c;筛选出存在长度超限问题的钢筋批次&#xff0c;并进行预警。传统的处理方式是人工核查&#xff0c;该方…

数组(九)-- LC[316][321][402] 去除重复字母

1 移掉 K 位数字 1.1 题目描述 题目链接&#xff1a;https://leetcode.cn/problems/remove-k-digits/ 1.2 思路分析 这道题让我们从一个字符串数字中删除 k 个数字&#xff0c;使得剩下的数最小。也就说&#xff0c;我们要保持原来的数字的相对位置不变。 以题目中的 num1432…