zoukankan      html  css  js  c++  java
  • 253. 会议室 II

    描述

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

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

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

    思路

    • 方法1:优先队列--最小堆
      1.按照会议开始时间进行排序;
      2.遍历会议建立会议结束时间的最小堆,如果当前会议开始时间大于堆顶会议结束时间,则将堆顶会议去除,更新当前会议;
    class Solution {
    public:
        static bool cmp(vector<int> a, vector<int> b){
            return a[0]<b[0];
        }
        int minMeetingRooms(vector<vector<int>>& intervals) {
            sort(intervals.begin(),intervals.end(),cmp);
            priority_queue<int, vector<int>, greater<int>> heap;
            for(auto iter:intervals){
                if(!heap.empty()&&heap.top()<=iter[0]){
                    heap.pop();
                }
                heap.push(iter[1]);
            }
            return heap.size();
        }
    };
    
    • 方法2:双指针法
      1.分离会议开始时间与结束时间,升序排序
      2.双指针遍历开始时间与结束时间,当开始时间大于等于结束时间时,房间数不变,结束时间指针+1
    class Solution {
    public:
        int minMeetingRooms(vector<vector<int>>& intervals) {
            int count=0;
            vector<int> start,end;
            for(auto i:intervals){
                start.push_back(i[0]);
                end.push_back(i[1]);
            }
            sort(start.begin(),start.end(),less<int>());
            sort(end.begin(),end.end(),less<int>());
            auto i=start.begin(),j=end.begin();
            while(i!=start.end()&&j!=end.end()){
                if(*i>=*j){
                    count--;
                    j++;
                }
                count++;
                i++;
            }
            return count;
        }
    };
    
  • 相关阅读:
    FPGA+ADV7511实现HDMI显示
    【转载】ZYNQ Cache问题的解决方法
    FPGA控制RGMII接口PHY芯片基础
    【转载】linux 压缩和解压缩命令gz、tar、zip、bz2
    python中正则表达式与模式匹配
    【转载】数字IC设计流程及开发工具
    Linux基本操作——文件相关
    数字信号处理专题(3)——FFT运算初探
    C++基础——类继承中方法重载
    C++基础——类继承
  • 原文地址:https://www.cnblogs.com/hunter-w/p/12681171.html
Copyright © 2011-2022 走看看