【LeetCode】会议室 II

By | 2月 27, 2022

给你一个会议时间安排的数组 intervals ,
每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,

返回 所需会议室的最小数量

/**
     * 253. 会议室 II

     * @param intervals 会议时间安排数组
     * @return 使用的会议室数目
     */
    public int minMeetingRooms(int[][] intervals) {
        int len = intervals.length;
        int[] starts = new int[len];
        int[] ends = new int[len];
        //申请两个数组分别存储会议的开始时间和结束时间
        for(int i=0; i<len; i++){
            starts[i] = intervals[i][0];
            ends[i] = intervals[i][1];
        }
        //对会议时间分别进行排序
        Arrays.sort(starts);
        Arrays.sort(ends);
        //遍历会议开始时间和结束时间的数组
        int res = 0;
        int cnt = 0;
        int i=0,j=0;
        while(i<len&&j<len){
            //如果会议没结束,出现新的开始会议时间,那么相当于使用一个新会议室
            //每一个会议开始时间肯定有一个对应的结束时间,不可能出现cnt<0的情况
            if(starts[i]<ends[j]){
                cnt++;
                i++;
            }else{
                //开始时间大于结束时间,表示上个会议结束,会议室空出
                cnt--;
                j++;
            }
            res = Math.max(res,cnt);
        }
        return res;
    }

发表评论

您的电子邮箱地址不会被公开。