classSolution{public:intminMeetingRooms(vector<vector<int>>&intervals){// Store end times of each roompriority_queue<int,vector<int>,greater<>>minHeap;sort(begin(intervals),end(intervals));for(constvector<int>&interval:intervals){if(!minHeap.empty()&&interval[0]>=minHeap.top())minHeap.pop();// No overlap, we can reuse the same roomminHeap.push(interval[1]);}returnminHeap.size();}};
classSolution{publicintminMeetingRooms(int[][]intervals){// Store end times of each roomQueue<Integer>minHeap=newPriorityQueue<>((a,b)->a-b);Arrays.sort(intervals,(a,b)->(a[0]-b[0]));for(int[]interval:intervals){if(!minHeap.isEmpty()&&interval[0]>=minHeap.peek())minHeap.poll();// No overlap, we can reuse the same roomminHeap.offer(interval[1]);}returnminHeap.size();}}
classSolution:defminMeetingRooms(self,intervals:List[List[int]])->int:minHeap=[]# Store end times of each roomforstart,endinsorted(intervals):ifminHeapandstart>=minHeap[0]:heapq.heappop(minHeap)heapq.heappush(minHeap,end)returnlen(minHeap)