/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */ class Solution { public: int minMeetingRooms(vector<Interval>& intervals) { int n = intervals.size(); if(!n)return 0; sort(intervals.begin(), intervals.end(), [](const Interval& i1, const Interval& i2){ return i1.start < i2.start; }); int depth = 1; priority_queue<int, vector<int>, greater<int>> ends; ends.push(intervals[0].end); for(int i = 1; i < intervals.size(); ++i) { auto interval = intervals[i]; while(ends.size() && interval.start >= ends.top()) ends.pop(); ends.push(interval.end); depth = max(depth, static_cast<int>(ends.size())); } return depth; } };