欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Leetcode 1041. 困于环中的机器人

Leetcode 1041. 困于环中的机器人

2026/3/26 1:47:36 来源:https://blog.csdn.net/m0_51437455/article/details/142434477  浏览:    关键词: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.执行结果

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词