美文网首页
[LeetCode 253] Meeting Rooms II

[LeetCode 253] Meeting Rooms II

作者: 灰睛眼蓝 | 来源:发表于2019-08-06 15:47 被阅读0次

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), find the minimum number of conference rooms required.

Example 1:

Input: [[0, 30],[5, 10],[15, 20]]
Output: 2

Example 2:

Input: [[7,10],[2,4]]
Output: 1

Solution: minHeap for endPoints

https://www.youtube.com/watch?v=wB884_Os58U

image.png
class Solution {
    public int minMeetingRooms(int[][] intervals) {
        if (intervals == null || intervals.length == 0 || intervals[0].length == 0)
            return 0;
        
        //1. sort intervals based on start points
        Arrays.sort (intervals, (int[] entry1, int[] entry2) -> (entry1[0] - entry2[0]));
        
        //2. have a minHeap to store all endPoints which has overlapping events
        // the final size of the minHeap is the number of rooms required
        PriorityQueue<Integer> minHeap = new PriorityQueue<> ();
        minHeap.offer (intervals[0][1]);
        
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] >= minHeap.peek ()) {
                minHeap.poll ();
                minHeap.offer (intervals[i][1]);
            } else {
                minHeap.offer (intervals[i][1]);
            }
        }
        
        return minHeap.size ();
    }
}

相关文章

网友评论

      本文标题:[LeetCode 253] Meeting Rooms II

      本文链接:https://www.haomeiwen.com/subject/jaimdctx.html