Leetcode 1041. 困于环中的机器人

1.题目基本信息

1.1.题目描述

在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:

  • 北方向 是y轴的正方向。

  • 南方向 是y轴的负方向。

  • 东方向 是x轴的正方向。

  • 西方向 是x轴的负方向。
    机器人可以接受下列三条指令之一:

  • “G”:直走 1 个单位

  • “L”:左转 90 度

  • “R”:右转 90 度
    机器人按顺序执行指令 instructions,并一直重复它们。

只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。

1.2.题目地址

https://leetcode.cn/problems/robot-bounded-in-circle/description

2.解题方法

2.1.解题思路

模拟:只有一种情况,机器人无限循环下不能到达起点,即为假如开始是向北走,那么一次循环后,机器人不在起点并且方向还是向北。其余情况经过有限次循环,都能到达起点。

2.2.解题步骤

第一步,构建方向数组并初始化当前的方向和位置

第二步,遍历步骤,并更新当前的方向和位置

第三步,根据一次循环后的位置和方向判断无限循环下是否能到达起点

3.解题代码

Python代码

class Solution:# 模拟:只有一种情况,机器人无限循环下不能到达起点,即为假如开始是向北走,那么一次循环后,机器人不在起点并且方向还是向北。其余情况经过有限次循环,都能到达起点。def isRobotBounded(self, instructions: str) -> bool:# 第一步,构建方向数组并初始化当前的方向和位置directions=[[0,1],[-1,0],[0,-1],[1,0]]directIndex=0x,y=0,0# 第二步,遍历步骤,并更新当前的方向和位置for c in instructions:if c=="G":x+=directions[directIndex][0]y+=directions[directIndex][1]elif c=="L":directIndex=(directIndex+1)%4elif c=="R":directIndex=(directIndex-1)%4# 第三步,根据一次循环后的位置和方向判断无限循环下是否能到达起点return False if directIndex==0 and (x!=0 or y!=0) else True

C++代码

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

4.执行结果

在这里插入图片描述

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

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

相关文章

基于springboot在线学籍管理系统

基于springboot在线学籍管理系统 摘 要 对在线学籍管理的流程进行科学整理、归纳和功能的精简&#xff0c;通过软件工程的研究方法&#xff0c;结合当下流行的互联网技术&#xff0c;最终设计并实现了一个简单、易操作的在线学籍管理系统。内容包括系统的设计思路、系统模块和…

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用&#xff0c; 于是写了篇文章&#xff0c; 把本地git操作从头写了一遍&#xff0c; 自己去看吧&#xff01; 0、基本概念 •Git是一个免费、开源的、分布式版本控制系统 •它使用一个特殊的叫做仓库的数据库来记录文件的变化 •仓库中的每个文件都有一个…

【网络】TCP协议的简单使用

目录 echo_service server 单进程单线程 多进程 多线程 线程池 client echo_service_code echo_service 还是跟之前UDP一样&#xff0c;我们先通过实际的代码来实现一些小功能&#xff0c;简单的来使用TCP协议进行简单的通信&#xff0c;话不多说&#xff0c;我们先实现…

Redis面试真题总结(四)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ AOF 持久化&#xff1f; AOF&#xff08;Append Only File&#x…

Selenium4.0实现自动搜索功能

01.Selenium4.0实现搜索功能 1.安装Selenium及查看Selenium版本 pip install selenium pip show seleniumfrom selenium import webdriver from chromedriver_py import binary_path import time from selenium.webdriver.common.by import By from selenium.webdriver.commo…

智能农业系统——土壤养分运移转化

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、AI知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&#x…

鸿蒙OpenHarmony【轻量系统内核扩展组件(C++支持)】子系统开发

C支持 基本概念 C作为目前使用最广泛的编程语言之一&#xff0c;支持类、封装、重载等特性&#xff0c;是在C语言基础上开发的一种面向对象的编程语言。 运行机制 C代码的识别主要由编译器支持&#xff0c;系统主要对全局对象进行构造函数调用&#xff0c;进行初始化操作。…

H264-NAL

目录 错误日志NAL简介参考资料 错误日志 拉流时存在如下日志,会因为拉流失败导致之后的任务也停止 missing picture in access unit with size 16384 Invalid NAL unit size Error splitting the input into NAL units. 之后只要设置抓取异常后&#xff0c;重新拉流&#xff…

zabbix email 告警

配置媒介、触发器动作&#xff08;动作、操作&#xff09; 为用户 定义媒体&#xff0c;比如电子邮件地址 动作 - 条件

手机在网状态查询接口如何用PHP进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口&#xff0c;即输入手机号码查询手机号在网状态&#xff0c;返回有正常使用、停机、在网但不可用、不在网&#xff08;销号/未启用/异常&#xff09;、预销户等多种状态。 二、手机在网状态查询适用哪些场景…

数据结构(7.3_4)——红黑树的定义和性质

红黑树和平衡排序二叉树的查插删时间 平衡二叉树的适用场景&#xff1a;适用以查为主、很少插入/删除vd场景 红黑树&#xff1a;适用于频繁插入、删除的场景&#xff0c;实用性更强 红黑树的考点 红黑树的定义&#xff1a; 红黑树的二叉排序树&#xff1a;左子树结点值<…

EvilScience靶机详解

主机发现 arp-scan -l 得到靶机ip 192.168.229.152 端口扫描 nmap -sV -A -T4 192.168.1.20 这段代码使用 nmap 命令来扫描目标主机 192.168.1.20&#xff0c;并执行以下操作&#xff1a;-sV&#xff1a;探测开放的端口&#xff0c;以确定服务/版本信息。-A&#xff1a;启…

【软件工程】可行性研究

一、目的 二、任务 三、步骤 四、结果&#xff1a;可行性研究报告 例题 选择题

Java基础-零拷贝

文章目录 什么是零拷贝&#xff1f;传统IO执行过程零拷贝的意义零拷贝的主要实现方式实际应用场景零拷贝的优势零拷贝的局限性 Java 中的零拷贝实现FileChannel.transferTo()FileChannel.transferFrom() 相关知识点解释什么是DMA内核空间和用户空间什么是用户态、内核态什么是上…

前端——实现时钟 附带小例子

创建日期对象 toLocaleDateString() 获取日期 console.log(date.toLocaleDateString()) toLocaleTimeString() 获取时间 console.log(date.toLocaleTimeString()) toLocaleString() 获取日期和时间 console.log(date.toLocaleString()) date.getDay() 获取星期几 周日为…

计算机毕业设计选题推荐-基于python+Django的全屋家具定制服务平台

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、全屋家具定制…

H264参考帧列表管理

P/SP/B帧的参考帧列表的初始化 参考H.264标准文档的8.2.4.2章节&#xff0c;暂不研究场编码。在初始化P/SP帧或B帧的参考帧列表过程中&#xff0c;DPB中至少要存在一个有效的、即被标记为“用于短期或长期参考”的参考帧。 P/SP Slice 参考帧列表初始化 P/SP Slice参考帧列表…

《算法岗面试宝典》正式发布

大家好&#xff0c;历时半年完善&#xff0c;《算法岗面试宝典》 终于可以跟大家见面了。 最近 ChatGPT 爆火&#xff0c;推动了技术圈对大模型算法场景落地的热情&#xff0c;就业市场招聘人数越来越多&#xff0c;算法岗一跃成为竞争难度第一的岗位。 岗位方向 从细分方向…

汽车总线之----CAN总线

Introduction 早期的车辆网络是点对点的模式&#xff0c;臃肿繁杂且效率低下 现在是以总线的模式&#xff0c;很明显线路简洁清爽了很多。 高速CAN可以支持1M/s的速率&#xff0c;低速CAN可以支持125k/s的速率 CAN节点的内部结构图(Structure of CAN-Bus and electronic C…

*C++:list

一.list简介 1. list 是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list 的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素…