253 Meeting rooms II

https://leetcode.com/problems/meeting-rooms-ii/

用pq要注意,放进pq要按开始的顺序,所以array本身仍然需要sort。pq只需要放结束的时间,如果放interval也只应该按结束时间排序,如果按开始时间排序会导致一些开始很晚但结束很早的interval被开始早结束晚的interval堵住poll不出来。

class Solution {
    public int minMeetingRooms(int[][] intervals) {
        if (intervals == null || intervals.length == 0) {
            return 0;
        }
        int res = 1;
        int count = 1;
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] i1, int[] i2) {
                return i1[0] - i2[0];
            }
        });
        pq.offer(intervals[0][1]);
        for (int i = 1; i < intervals.length; i++) {
            while (!pq.isEmpty() && intervals[i][0] >= pq.peek()) {
                pq.poll();
                count--;
            }
            pq.offer(intervals[i][1]);
            count++;
            res = Math.max(res, count);
        }
        return res;
    }
}

重点是要知道当前时间有多少room可以被free掉,用pq解决

Last updated