874.模拟行走机器人
链接:874.模拟行走机器人
难度:Medium
标签:数组、哈希表、模拟
简介:返回从原点到机器人所有经过的路径点(坐标为整数)的最大欧式距离的平方。
题解 1 - cpp
- 编辑时间:2023-07-19
- 执行用时:100ms
- 内存消耗:47.7MB
- 编程语言:cpp
- 解法介绍:模拟。
#define X first
#define Y second
#define pii pair<int, int>
vector<vector<int>> dirs = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
class Solution {
public:
int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
unordered_map<int, unordered_map<int, bool>> m;
for (auto &item : obstacles) m[item[0]][item[1]] = true;
int d = 0, res = 0;
pii cur = make_pair(0, 0);
for (auto &cmd : commands) {
if (cmd == -1) d = (d + 1) % 4;
else if (cmd == -2) d = (d - 1 + 4) % 4;
else while (cmd--) {
if (m.count(cur.X + dirs[d][0]) && m[cur.X + dirs[d][0]].count(cur.Y + dirs[d][1])) break;
cur.X += dirs[d][0];
cur.Y += dirs[d][1];
res = max(res, (int)(pow(cur.X, 2) + pow(cur.Y, 2)));
}
}
return res;
}
};