0
点赞
收藏
分享

微信扫一扫

LeetCode 253. 会议室 II

狐沐说 2022-04-13 阅读 158

LeetCode 253. 会议室 II

文章目录

题目描述

给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。
示例 1:
输入:intervals = [[0,30],[5,10],[15,20]]
输出:2

会议室 II
提示:

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

一、解题关键词


二、解题报告

1.思路分析

2.时间复杂度

3.代码示例

class Solution {
    public int minMeetingRooms(int[][] intervals) {
        //优先队列实现会议室开始排序 

        int rowLen = intervals.length;
        int colLen = intervals[0].length;
        if(rowLen == 0){return 0;}
        //队列2 结束时间排序 没有结束就新建一个会议室 最后堆容量就是会议室数量 
        PriorityQueue<Integer> allocator = new PriorityQueue<Integer>(rowLen,new Comparator<Integer>(){
            public int compare (Integer a,Integer b){
                return a - b;
            }
        });

        Arrays.sort(intervals,new Comparator<int[]>(){
            public int compare(final int [] a,final int [] b){
                return a[0] - b[0];
            }
        });

        allocator.add(intervals[0][1]);
        for(int i = 1;i < intervals.length;i++){
            if(intervals[i][0] >= allocator.peek()){
                allocator.poll();
            }
            allocator.add(intervals[i][1]);
        }
        return allocator.size();
    }
}

2.知识点

拆分问题很重要,会议开始时间和结束时间 是关键要素

总结

举报

相关推荐

0 条评论