一、题目
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[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. 起止时间分别排序
(1)思路
设计两个向量,分别记录所有会议的 开始时间 和 结束时间 并排序,用两个整数分别记录当前的 会议室数量 及 空余会议室数量。
遍历 开始时间,依次处理:
1)有 结束时间 < 当前开始时间,空余会议室数量++,指针指向下一 结束时间;
2)若 空余会议室数量 = 0,会议室数量++;
3)若 空余会议室数量 != 0,空余会议室数量–;
因为排序后数组一定满足 第 i 个开始时间 < 第 i 个结束时间,过程不会出错。
(2)代码
class Solution {
public:
int minMeetingRooms(vector<vector<int>>& intervals) {
if (intervals.empty(