力扣1353.最多可以参加的会议数目
-
优先队列
- 枚举时间i在i时刻仍开展的会议中选结束时间最近的那个
- 优先队列存每天进行的会议
-
class Solution {public:int maxEvents(vector<vector<int>>& events) {int maxDay = 0;unordered_map<int,vector<int>> day2days;for(vector<int>& event : events){//取最大数if(maxDay < event[1])maxDay = event[1];//将每天开始的会议存下来day2days[event[0]].push_back(event[1]);}int res=0;//小根堆priority_queue<int,vector<int>,greater<>> q;for(int i=1;i<=maxDay;i++){//能找到第i天开始的会议if(day2days.find(i) != day2days.end())//全部pushfor(int day : day2days[i])q.push(day);//已经结束的pop掉while(!q.empty() && q.top() < i)q.pop();//取出结束时间最近的if(!q.empty()){q.pop();res ++;}}return res;}};