Given an array of meeting time intervals consisting of start and end times [[s1, e1], [s2,e2]], (s_i < e_i), find the minimum number of conference rooms requried.
classSolution{publicintminMeetingRooms(int[][]intervals){if(intervals.length==0)return0; // Sort by the start timeArrays.sort(intervals,(n1, n2)-> n1[0]- n2[0]);PriorityQueue<Integer> endTimes =newPriorityQueue<Integer>();endTimes.offer(intervals[0][1]);for(int i =1; i <intervals.length; i++){if(intervals[i][0]>=endTimes.peek()){// existing room availableendTimes.poll();}endTimes.offer(intervals[i][1]);// add new endTime (room)}returnendTimes.size();}}
Complexity Analysis
Time Complexity: O(nlog(n)). 排序需要占用O(nlog(n))的时间;每次Heap的操作需要O(log(n))时间,而总共可能有n次,即O(nlog(n)).