Closest Room LeetCode solution in C++

1
class Solution {
2
public:
3
vector<int> closestRoom(vector<vector<int>> &rooms, vector<vector<int>> &queries) {
4
const int n = rooms.size(), m = queries.size();
5
for (int i = 0; i < m; i++) queries[i].push_back(i);
6
sort(begin(queries), end(queries), [](const auto &a, const auto &b) { return a[1] > b[1]; });
7
sort(begin(rooms), end(rooms), [](const auto &a, const auto &b) { return a[1] > b[1]; });
8
vector<int> ans(m, -1);
9
set<int> ids;
10
int j = 0;
11
for (const auto &q : queries) {
12
while (j < n && rooms[j][1] >= q[1]) ids.insert(rooms[j++][0]);
13
if (ids.empty()) continue;
14
int id = q[0];
15
auto it = ids.lower_bound(id);
16
int id1 = (it != end(ids)) ? *it : INT_MAX;
17
int id2 = id1;
18
if (it != begin(ids)) id2 = *prev(it);
19
ans[q[2]] = abs(id1 - id) < abs(id2 - id) ? id1 : id2;
20
}
21
return ans;
22
}
23
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0