zoukankan      html  css  js  c++  java
  • [Leetcode]253. 会议室 II(数组/堆)

    题目

    给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。

    示例 1:

    输入: [[0, 30],[5, 10],[15, 20]]
    输出: 2
    示例 2:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/meeting-rooms-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题解

    这道题的重点是可以抛弃到开始时间和结束时间的对应关系,因为它没用
    方法一:指针
    1 开两个一维数组,分别存放开始时间、结束时间。
    2 数组排序。
    3 两个数组分别维护一个指针,均初始化为第一个位置,然后按时间顺序右移指针。
    4 维护房间数roomCnt=begIdx+1-endIdx,它的最大值即为所求。

    方法二:堆
    1 用最小堆堆存结束时间,堆顶元素即为最快结束的房间。
    2 按开始时间排序会议,遍历数组,每次比较该元组结束时间和堆顶元素,若堆顶元素即结束时间大于该起始时间,则将结束时间加入堆,若小于则更新堆顶元素
    3 最终堆的size即为所求

    代码

    方法一

    class Solution {
        public int minMeetingRooms(int[][] intervals) {
            if(intervals==null||intervals.length==0){
                return 0;
            }
    
            int len=intervals.length;//
            int[] end=new int[len];
            int[] beg=new int[len];
            
            for(int i=0;i<intervals.length;++i){
                end[i]=intervals[i][1];
                beg[i]=intervals[i][0];
            }
    
            Arrays.sort(end);
            Arrays.sort(beg);
    
            
            int idxBeg=0;
            int idxEnd=0;
            int maxRoomCnt=0;
            int roomCnt=0;
            while(idxBeg<len&&idxEnd<len){//
                roomCnt=idxBeg+1-idxEnd;
                maxRoomCnt=roomCnt>maxRoomCnt?roomCnt:maxRoomCnt;
    
                if(idxBeg!=len-1&&beg[idxBeg+1]<end[idxEnd]){//
                    idxBeg++;
                }else{
                    idxEnd++;
                }
            }
            return maxRoomCnt;
        }
    }
    
  • 相关阅读:
    sql server 2008 安装过程与创建建sql server登录用户
    Angularjs之controller 和filter(四)
    Angularjs之表单实例(三)
    antlr应用
    antlr4笔记(转)
    go升级版本
    go安装依赖包
    tsar
    java纤程
    HighLevelRestApi管理ES
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/13923160.html
Copyright © 2011-2022 走看看