253会议室II

题目描述

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

示例 1:

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

问题分析

利用小顶堆

  • 首先根据开始时间进行排序
  • 数据中存入会议结束时间
  • 新进会议的开始时间与结束时间比较,
    如果大于则pop(),然后再push()
    如果小于则push(),即新开一个会议

解题思路1

class Solution {
public:
    
    int minMeetingRooms(vector>& intervals) {

        if (intervals.empty())
        {
            return 0;
        }
        //进行从小到大排序
        sort(intervals.begin(), intervals.end());
        //构建小顶堆
        priority_queue, greater> store;

        for (auto val : intervals)
        {
            if (!store.empty() && store.top() <= val[0])
            {
                store.pop();
            }
            store.push(val[1]);
        }
        return store.size();
    }
};

你可能感兴趣的:(253会议室II)