Leetcode 1041. 困于环中的机器人

ops/2024/9/23 12:15:53/

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.ppmy.cn/ops/114770.html

相关文章

js进阶——作用域闭包

1. 作用域与闭包的基础概念 1.1 作用域 (Scope) 在 JavaScript 中&#xff0c;作用域定义了变量、函数的可访问性。根据变量声明的位置不同&#xff0c;作用域有三种主要类型&#xff1a; 全局作用域&#xff1a;在代码的任何地方都可以访问。函数作用域&#xff1a;只在声明…

算法题之每日温度

每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入…

单点登录前端

​​​​​​ cookiessession 服务端创建一个登录认证中心&#xff0c; 验证成功后&#xff0c;在session里面创建一个映射&#xff0c;key为cookies&#xff0c;value为用户信息&#xff0c;将cookies返回给客户端&#xff0c;客户端其他系统查询时携带该cookies&#xff0c;…

(182)时序收敛--->(32)时序收敛三二

1 目录 (a)FPGA简介 (b)Verilog简介 (c)时钟简介 (d)时序收敛三二 (e)结束 1 FPGA简介 (a)FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域…

Linux 进程2

环境变量 再Linux操作系统中一切皆文件&#xff0c;这个环境变量自然也是一个文件&#xff0c;它的作用是辅助我们使用操作系统还可以辨识我们是什么用户(一般用户&#xff0c;root用户)。 env是读取完整环境变量的指令&#xff0c;里面记录了许多我登录操作系统所用的用户的信…

Docker FROM 指定基础镜像

所谓定制镜像&#xff0c;其一定是以一个镜像为基础&#xff0c;在其上进行定制。 比如一个 nginx 镜像的容器&#xff0c;再进行修改一样&#xff0c;基础镜像是必须指定的。而 FROM 就是指定基础镜像&#xff0c;因此一个 Dockerfile 中 FROM 是必备的指令&#xff0c;并且必…

使用vite+react+ts+Ant Design开发后台管理项目(一)

前言 本文将引导开发者从零基础开始&#xff0c;运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈&#xff0c;构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导&#xff0c;文章旨在为开发者揭示如何利用这些技术工…

[SAP ABAP] 创建数据库视图和维护视图

数据准备 学校表(ZDBT_SCH_437) 学生表(ZDBT_STU_437) 学校表(ZDBT_SCH_437)与学生表(ZDBT_STU_437)字段 学校表(ZDBT_SCH_437)与学生表(ZDBT_STU_437)行数据明细 1.创建数据库视图 使用SE11创建数据库视图 填写视图名称ZV_DATABASEV_437&#xff0c;点击创建按钮 选择数据库视…