Skip to content

Commit 3e6c4f1

Browse files
authored
Create maximum-number-of-events-that-can-be-attended.cpp
1 parent e5df9cb commit 3e6c4f1

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Time: O(r + nlogn), r is the max end day of events
2+
// Space: O(n)
3+
4+
class Solution {
5+
public:
6+
int maxEvents(vector<vector<int>>& events) {
7+
sort(events.begin(), events.end(), greater<vector<int>>());
8+
const auto max_day = (*max_element(events.cbegin(), events.cend(),
9+
[](const auto& a, const auto& b) {
10+
return a[1] < b[1];
11+
}))[1];
12+
priority_queue<int, vector<int>, greater<int>> min_heap;
13+
int result = 0;
14+
for (int d = 1; d <= max_day; ++d) {
15+
while (!events.empty() && events.back()[0] == d) {
16+
min_heap.emplace(events.back()[1]);
17+
events.pop_back();
18+
}
19+
while (!min_heap.empty() && min_heap.top() == d - 1) {
20+
min_heap.pop();
21+
}
22+
if (min_heap.empty()) {
23+
continue;
24+
}
25+
min_heap.pop();
26+
++result;
27+
}
28+
return result;
29+
}
30+
};

0 commit comments

Comments
 (0)