参考:https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended/solution/sao-miao-suan-fa-tan-xin-by-lucifer1004/
class Solution {
public:
int maxEvents(vector<vector<int>>& events) {
sort(events.begin(), events.end()); //以开始时间排序升序
int res = 0;
priority_queue<int, vector<int>, greater<int> >pq; //小根堆
for(int i = 1,j = 0; i < 100005; i++)
{//1 <= events[i][0] <= events[i][1] <= 10^5
for( ; j < events.size() && events[j][0] <= i; j++)
{//将开始时间早于等于时间i的会议的结束时间存入小根堆
//不是每次都会进这个循环
pq.push(events[j][1]);
}
while(!pq.empty())
{
int end = pq.top();
pq.pop();
if(end >= i )
{//如果i > end则会议结束时间比i早,会议过期了
res++;
break;
}
}
}
return res;
}
};