入门力扣自学笔记257 C++ (题目编号:1041)

1041. 困于环中的机器人

题目:

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


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/robot-bounded-in-circle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

首先,我们定义一个4行2列的数组,用来存储机器人向东南西北方向移动的坐标,从而方便加和。

其次,我们来判断机器人是否可以返回到原点,返回原点有两种情况:

1.机器人返回到原点,也就是(0,0),并且必须面向北面。

2.机器人移动的位置不为0。这里的不为0是指向左移动+1,向右移动-1,最后这个位置参数只要不是0,那么机器人哪怕多经过几次循环,也一定可以返回到原点。

最后,我跟根据上述两种情况,来判断机器人是否可以进入循环即可。


代码:

class Solution {
public:
    int dir[4][2] = {{0,1},{-1,0},{0,-1},{1,0}};
    bool isRobotBounded(string instructions) {
        int status = 0;
        int x = 0,y = 0;
        for(char c : instructions)
        {
            if(c == 'G')
            {
                x += dir[status][0];
                y += dir[status][1];
            }
            else if(c == 'L')
            {
                status += 1;
                status %= 4;
            }
            else
            {
                status += 4;
                status -= 1;
                status %= 4;
            }
        }
        if(x == 0 && y == 0 || status != 0)
            return true;
        else
            return false;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GuLi商城-SpringCloud-Gateway网关核心概念、测试API网关

网关作为流量的入口&#xff0c;功能包括路由转发、权限校验、限流控制等 Route(路由)&#xff1a;包含独一无二的路由id、目的地的URL、断言集合、过滤器集合&#xff0c;断言用来判断 路由是否能到达目的地URL Predicats(断言)&#xff1a;用来判断路由是否能到达目的地URL…

探索三维世界:从Hello World开始的Three.js入门之旅

探索三维世界&#xff1a;从Hello World开始的Three.js入门之旅1、什么是Three.Js2、前要准备工作3、Hello World3.1、引入three3.2、创建场景3.3、创建相机3.4、渲染器3.5、创建物体3.6、渲染3.7、让正方体“动”起来3.8、手动控制正方体的运动3.9、坐标轴辅助器1、什么是Thre…

硬件语言Verilog HDL牛客刷题day07 计数器与存储器部分

1.VL50 简易秒表 1.题目&#xff1a; 请编写一个模块&#xff0c;实现简易秒表的功能&#xff1a;具有两个输出&#xff0c;当输出端口second从1-60循环计数&#xff0c;每当second计数到60&#xff0c;输出端口minute加一&#xff0c;一直到minute60&#xff0c;暂停计数。 …

亚马逊美国站严查磁体产品?亚马逊最新政策公布

近期&#xff0c;亚马逊美国站公布磁铁产品&#xff08;不包含玩具&#xff09;的最新政策更新公告&#xff0c;公告如下&#xff1a; 公告显示&#xff0c;由于美国消费品安全委员会&#xff08;US Consumer Product Safety Commission&#xff09;出台了新的安全规定&#xf…

67页新型智慧城市整体规划建设方案

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除 新型智慧城市总体规划智慧城市基础平台的定位对于省&#xff1a;智慧城市建设是省数字政府的核心节点和重要一环 对于市直单位&#xff1a;智慧城市基础平台是全市数据资源和公…

ToBeWritten之反入侵安全技术面经总结

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

Transformer中的注意力机制及代码

文章目录1、简介2、原理2.1 什么是注意力机制2.2 注意力机制在NLP中解决了什么问题2.3 注意力机制公式解读2.4 注意力机制计算过程3、单头注意力机制与多头注意力机制4、代码4.1 代码14.2 代码21、简介 最近在学习transformer&#xff0c;首先学习了多头注意力机制&#xff0c…

动态规划之线性DP

文章目录定义题单Acwing题单AcWing 898. 数字三角形&#xff08;模板题&#xff09;AcWing 895. 最长上升子序列&#xff08;模板题&#xff09;AcWing 896. 最长上升子序列 II&#xff08;模板题&#xff0c;优化贪心&#xff09;AcWing 897. 最长公共子序列&#xff08;模板题…

基于凸集上投影(POCS)的聚类算法

POCS&#xff1a;Projections onto Convex Sets。在数学中&#xff0c;凸集是指其中任意两点间的线段均在该集合内的集合。而投影则是将某个点映射到另一个空间中的某个子空间上的操作。给定一个凸集合和一个点&#xff0c;可以通过找到该点在该凸集合上的投影来进行操作。该投…

Vue+springboot+java学生成绩动态追踪系统课程资源课件下载设计与实现

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;学生成绩动态追踪系统设计与实现当然也不能排除在外&#xff0c;从科目信息、学生成绩的统计和分析&#xff0c;在过程中会产生…

Linux下的shell编程(必须给予执行权限)

目录 一&#xff1a;Shell编程的基本介绍 1.1 Shell脚本的执行方式 1.2 Shell变量 1.2.1 shell编程规范 1.3 Shell环境变量 1.4 Shell位置参数变量 1.5 预定义变量 1.6 运算符 1.7 条件判断(if) 1.8 流程控制 1.8.1 多分支(if-else if) 1.8.2 case(Switch case) 1…

ChatGPT帮我和老板吵架,半分钟做了个思维导图...

大家好&#xff0c;我是小z&#xff0c;也可以叫我阿粥最近那个疑似成都电科的截图已经传疯了&#xff0c;贴一张图回味下&#xff1a;这种壮士断腕式的吵法&#xff0c;可以说几乎是单方面的虐杀。但是有朋友问了&#xff0c;在职场中还是有所顾忌&#xff0c;有没有更体面点的…

ospf综合实验

实验要求 1,R4为ISP,其上只能配置IP地址&#xff1b;R4与其他所有直连设备间均使用公有IP 2,R3-R5/6/7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3,整个0sPF环境IP基于172.16.0.0/16划分&#xff1b; 4,所有设备均可访问R4的环回&#xff1b; 5,减少LSA的更新量&#xf…

【Spring Boot】自定义 Banner

文章目录1. 什么是 Banner2. 如何修改 Banner3. IDEA 中演示4. 快速生成 Banner5. 指定 banner.txt 的位置6. 在 Spring Boot 2 中的说明6.1 图片生成 Banner6.1 增强显示效果6.3 更多配置项7. 补充Spring Boot Version: 3.0.x 1. 什么是 Banner 启动 Spring Boot 时&#xf…

VisualStudio如何进行OneNote插件开发?

文章目录0、引言1、工具和数据准备2、创建工程3、创建ribbon配置文件4、编写功能代码5、安装和部署6、OneNote插件展示0、引言 在OneNote做笔记很方便&#xff0c;但笔者用久后&#xff0c;就觉得OneNote缺少自己想要的一些功能&#xff0c;希望通过二次开发实现不断增长的需求…

springcloud:xxl-job的任务触发机制及调度过期策略

0.引言 我们都会用xxl-job&#xff0c;但很少有人能够说清楚xxl-job的任务触发机制&#xff0c;面临任务阻塞、服务重启如何处理任务&#xff0c;本期我们就来一起看看xxl-job的任务触发机制 1. 调度过期策略 我们在配置策略时可以看到有一个调度过期策略配置&#xff0c;也…

IT知识百科:什么是BGP?

BGP&#xff08;Border Gateway Protocol&#xff09;是一种用于在互联网中交换路由信息的协议。BGP在互联网的路由选择和转发中扮演着至关重要的角色&#xff0c;是互联网的核心协议之一。在本文中&#xff0c;我们将深入探讨BGP的基本概念、特点和使用方法。 一、BGP的基本概…

Linux系统【centos7】常用系统命令大全

CentOS 7是一款流行的Linux操作系统。在本教程中&#xff0c;我们将介绍CentOS 7的一些重要功能和基本操作。 安装CentOS 7 1. 下载CentOS 7 ISO文件&#xff0c;并将其刻录到DVD上。 2. 将DVD插入计算机并启动。选择从DVD启动&#xff0c;进入CentOS 7安装程序。 3. 选择语…

剪枝与重参第二课:修剪方法和稀疏训练

目录修剪方法和稀疏训练前言1.修剪方法1.1 经典框架&#xff1a;训练-剪枝-微调1.2 训练时剪枝(rewind)1.3 removing剪枝2.dropout and dropconnect3.稀疏训练(Sparse training)总结修剪方法和稀疏训练 前言 手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记&#xff…

webpack5搭建react框架-开发环境配置

webpack5配置react基础开发环境 1、前言 之前已经使用webpack5进行了react框架基础环境的搭建&#xff08;基础环境配置&#xff09;&#xff0c;但是每次修改完项目代码都需要重新执行npm run build指令进行构建&#xff0c;并且需要刷新浏览器中的页面查看最新修改的代码结…
最新文章