253. 会议室 II

35 阅读1分钟

253. 会议室 II

相关企业

提示

给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。

 

示例 1:

输入: intervals = [[0,30],[5,10],[15,20]]
输出: 2

示例 2:

输入: intervals = [[7,10],[2,4]]
输出: 1

 

提示:

  • 1 <= intervals.length <= 104
  • 0 <= starti < endi <= 106

解题答案

class Solution {
    public int minMeetingRooms(int[][] intervals) {
        Arrays.sort(intervals, (int[] m1, int[] m2) -> m1[0] - m2[0]);
        PriorityQueue<Integer> heap = new PriorityQueue<>();
        heap.add(intervals[0][1]);
        for (int i = 1; i < intervals.length; i++) {
            if (!heap.isEmpty() && intervals[i][0] >= heap.peek()) { // 可以共用一个会议室
                heap.remove();
            }
            heap.add(intervals[i][1]);
        }
        return heap.size();
    }
}