Leetcode 1041. 困于环中的机器人

立聪堂德州十三局店  论坛元老 | 2024-9-23 08:10:17 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 2302|帖子 2302|积分 6906

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代码
  1. class Solution:
  2.     # 模拟:只有一种情况,机器人无限循环下不能到达起点,即为假如开始是向北走,那么一次循环后,机器人不在起点并且方向还是向北。其余情况经过有限次循环,都能到达起点。
  3.     def isRobotBounded(self, instructions: str) -> bool:
  4.         # 第一步,构建方向数组并初始化当前的方向和位置
  5.         directions=[[0,1],[-1,0],[0,-1],[1,0]]
  6.         directIndex=0
  7.         x,y=0,0
  8.         # 第二步,遍历步骤,并更新当前的方向和位置
  9.         for c in instructions:
  10.             if c=="G":
  11.                 x+=directions[directIndex][0]
  12.                 y+=directions[directIndex][1]
  13.             elif c=="L":
  14.                 directIndex=(directIndex+1)%4
  15.             elif c=="R":
  16.                 directIndex=(directIndex-1)%4
  17.         # 第三步,根据一次循环后的位置和方向判断无限循环下是否能到达起点
  18.         return False if directIndex==0 and (x!=0 or y!=0) else True
复制代码
C++代码
  1. class Solution {
  2. public:
  3.     bool isRobotBounded(string instructions) {
  4.         vector<vector<int>> directions={{0,1},{-1,0},{0,-1},{1,0}};
  5.         int directIndex=0;
  6.         int x=0,y=0;
  7.         for(char c:instructions){
  8.             if(c=='G'){
  9.                 x+=directions[directIndex][0];
  10.                 y+=directions[directIndex][1];
  11.             }else if(c=='L'){
  12.                 directIndex=(directIndex+1)%4;
  13.             }else if(c=='R'){
  14.                 directIndex=(directIndex-1+4)%4;
  15.             }
  16.         }
  17.         return directIndex==0 && (x!=0 || y!=0) ? false : true;
  18.     }
  19. };
复制代码
4.实行结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表