public int MinMeetingRooms(int[][] intervals) { if (intervals == null || intervals.Length == 0) { return(0); } Sort(intervals, 0); var minHeap = new MinHeap(intervals.Length); minHeap.Insert(intervals[0][1]); for (int i = 1; i < intervals.Length; i++) { if (!minHeap.IsEmpty() && minHeap.Peek() <= intervals[i][0]) { minHeap.Pop(); } minHeap.Insert(intervals[i][1]); } return(minHeap.Size()); }