Problem: 874. 模拟行走机器人
思路
模拟,以及掌握将存储二维坐标的简单方式
解题方法
可以逐步模拟的原因是x最大为9
Code
class Solution {
int[][] dirs = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
public int robotSim(int[] commands, int[][] obstacles) {
int px = 0, py = 0, d = 1;
Set<Integer> set = new HashSet<Integer>();
for (int[] obstacle : obstacles) {
set.add(obstacle[0] * 60001 + obstacle[1]);
// 映射坐标
}
int res = 0;
for (int c : commands) {
if (c < 0) {
d += c == -1 ? 1 : -1;
d %= 4;
if (d < 0) {
d += 4;
}
} else {
for (int i = 0; i < c; i++) {
if (set.contains((px + dirs[d][0]) * 60001 + py + dirs[d][1])) {
break;
}
px += dirs[d][0];
py += dirs[d][1];
res = Math.max(res, px * px + py * py);
}
}
}
return res;
}
}