链接:https://leetcode-cn.com/problems/walking-robot-simulation/solution/mo-ni-xing-zou-ji-qi-ren-by-leetcode/
模拟即可。注意要将障碍物存在一个set中方便查询,每一个指令应该一步一步走检查是否碰到了障碍物。
java 代码:
class Solution {
public int robotSim(int[] commands, int[][] obstacles) {
int direction = 0;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};
int ans = 0;
int x = 0;
int y = 0;
HashSet<String> set = new HashSet<>();
for(int[] obstacle:obstacles){
set.add(obstacle[0]+","+obstacle[1]);
}
for(int i = 0;i<commands.length;i++)
{
if(commands[i]==-1)
direction = (direction+1)%4;
else if(commands[i]==-2)
direction = (direction+3)%4;
else
{
for(int j = 0;j<commands[i];j++)
{
int tempx = x+dx[direction];
int tempy = y+dy[direction];
if(!set.contains(tempx+","+tempy))
{
x = tempx;
y = tempy;
}
else
break;
}
if(x*x+y*y>ans)
ans = x*x+y*y;
}
}
return ans;
}
}