leetcode-華為專題-1353. 最多可以參加的會議數目
阿新 • • 發佈:2021-08-19
class Solution { public: static bool cmp(vector<int> &a, vector<int> &b){ if(a[0]!=b[0]) return a[0]<b[0]; else return a[1]<b[1]; } int maxEvents(vector<vector<int>>& events) { if(events.size()==0)return 0; sort(events.begin(), events.end(), cmp); priority_queue<int ,vector<int>, greater<int>> minheap; vector<int> temp; temp = {events[0][0], events[0][1]}; int cot = 0; int j = 0; for(int i = 1; i <= 1e5; i++){ // i 代表第幾天// 將開始時間等於i的結束時間加入堆 while(j<events.size()&&events[j][0]==i){ // minheap.push(events[j++][1]); } // 將結束時間小於今天的,彈出堆 while(!minheap.empty()&& minheap.top()<i){ minheap.pop(); }// 當前堆不空,則當前堆頂是結束時間最短的,結果加1,再將堆頂彈出 if(!minheap.empty()){ cot++; minheap.pop(); } } return cot; } };