Skip to content

Commit a0d45ea

Browse files
committed
Time: 54 ms (93.09%), Space: 37.5 MB (76.8%) - LeetHub
1 parent 2b90283 commit a0d45ea

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
class Solution {
22
public:
33
int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
4-
54
set<pair<int, int>> ob;
65
for (auto& i : obstacles) {
76
ob.insert({i[0], i[1]});
8-
ob.insert({i[1], i[0]});
97
}
108

119
auto haveOb = [&](int x, int y) {
1210
return (ob.find({x, y}) != ob.end());
1311
};
1412

15-
1613
auto fixDir = [&](int x, char dir) {
1714
if (x == -1) {
1815
if (dir == 'u') dir = 'r';
1916
else if (dir == 'r') dir = 'd';
2017
else if (dir == 'd') dir = 'l';
2118
else if (dir == 'l') dir = 'u';
22-
}
23-
if (x == -2) {
19+
} else if (x == -2) {
2420
if (dir == 'u') dir = 'l';
2521
else if (dir == 'l') dir = 'd';
2622
else if (dir == 'd') dir = 'r';
@@ -29,7 +25,6 @@ class Solution {
2925
return dir;
3026
};
3127

32-
3328
auto getMx = [&](int x, int y) {
3429
return x * x + y * y;
3530
};
@@ -42,47 +37,46 @@ class Solution {
4237
dir = fixDir(i, dir);
4338
continue;
4439
}
45-
cout << x << ' ' << y << ' ' << dir << endl;
46-
// cout << dir << ' ';
40+
41+
int cur = i;
4742
if (dir == 'u') {
48-
while (i) {
43+
while (cur) {
44+
y++, cur--;
4945
if (haveOb(x, y)) {
50-
y--; break;
46+
y--;
47+
break;
5148
}
52-
y++, i--;
5349
mx = max(mx, getMx(x, y));
54-
// cout << mx << ' ';
5550
}
56-
}
57-
if (dir == 'r') {
58-
while (i) {
51+
} else if (dir == 'r') {
52+
while (cur) {
53+
x++, cur--;
5954
if (haveOb(x, y)) {
60-
x--; break;
55+
x--;
56+
break;
6157
}
62-
x++, i--;
6358
mx = max(mx, getMx(x, y));
64-
// cout << mx << ' ';
6559
}
66-
}
67-
if (dir == 'd') {
68-
while (i) {
60+
} else if (dir == 'd') {
61+
while (cur) {
62+
y--, cur--;
6963
if (haveOb(x, y)) {
70-
y++; break;
64+
y++;
65+
break;
7166
}
72-
y--, i--;
7367
mx = max(mx, getMx(x, y));
7468
}
75-
}
76-
if (dir == 'l') {
77-
while (i) {
69+
} else if (dir == 'l') {
70+
while (cur) {
71+
x--, cur--;
7872
if (haveOb(x, y)) {
79-
x++; break;
73+
x++;
74+
break;
8075
}
81-
x--, i--;
8276
mx = max(mx, getMx(x, y));
8377
}
8478
}
8579
}
8680
return mx;
8781
}
88-
};
82+
};

0 commit comments

Comments
 (0)