Skip to content

Commit 156e823

Browse files
committed
feat: 2402. Meeting Rooms III
1 parent 1870c52 commit 156e823

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
typedef pair<long long, int> PII;
2+
class Solution {
3+
public:
4+
int mostBooked(int n, vector<vector<int>>& meetings) {
5+
sort(meetings.begin(), meetings.end(), [](auto &m1, auto &m2){
6+
return m1[0] < m2[0];
7+
});
8+
vector<int> cnt(n, 0);
9+
// <结束时间, room id>
10+
priority_queue<PII, vector<PII>, greater<PII>> pq;
11+
set<int> free;
12+
for (int i = 0; i < n; i++) free.insert(i);
13+
for (auto meet : meetings) {
14+
long long s = meet[0], e = meet[1];
15+
while (pq.size() && pq.top().first <= s) {
16+
free.insert(pq.top().second);
17+
pq.pop();
18+
}
19+
// delay to the first time of pq top
20+
if (!free.size()) {
21+
auto t = pq.top().first;
22+
// 这里不能把所有 t 时刻结束的都放入 free
23+
free.insert(pq.top().second);
24+
pq.pop();
25+
e = e-s+t, s = t;
26+
}
27+
auto it = free.begin();
28+
pq.push({e, *it});
29+
cnt[*it]++;
30+
free.erase(it);
31+
}
32+
int ans = 0;
33+
for (int i = 1; i < n; i++) {
34+
if (cnt[i] > cnt[ans]) ans = i;
35+
}
36+
return ans;
37+
}
38+
};

0 commit comments

Comments
 (0)