1041.困于环中的机器人 - 模拟 官方题解思路

Smile_slime_47

原题地址:https://leetcode.cn/problems/robot-bounded-in-circle/

题解

基于官方题解思路

不管机器人执行的过程,我们只看机器人在这顿操作中的始态末态,本质上机器人每次执行完这一串指令都相当于进行了一次位移并改变了一次朝向

  • 考虑最简单的情况,如果机器人在执行完指令后仍然在原地,那么理所当然地,机器人永远都走不出原点
  • 如果机器人进行了一次位移并改变了朝向,我们可以把这段位移看成一个向量,而朝向则决定了这个向量与上一个向量的夹角
  • 当朝向不为北时,说明机器人的每一次位移向量都与上一个位移向量形成了一个夹角,那么在有限次循环中,机器人必然走出一个闭合正多边形的环形路径
  • 当朝向为北时,说明机器人的每一次位移向量都是上一个向量的延伸,机器人实际上相当于一直在往一个方向移动,也就是唯一一个不会形成环的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public boolean isRobotBounded(String instructions) {
int x=0,y=0,angle=0;
for(int i=0;i<instructions.length();i++){
if(instructions.charAt(i)=='G'){
if(angle==0)y++;
else if(angle==180||angle==-180)y--;
else if(angle==90||angle==-270)x++;
else if(angle==-90||angle==270)x--;
}else if(instructions.charAt(i)=='L'){
angle-=90;
if(angle%360==0)angle=0;
}else if(instructions.charAt(i)=='R'){
angle+=90;
if(angle%360==0)angle=0;
}
}
if(angle==0&&(x!=0||y!=0))return false;
else return true;
}
}
Comments
On this page
1041.困于环中的机器人 - 模拟 官方题解思路