题目描述
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。
示例 1:
输入: [[0, 30],[5, 10],[15, 20]]
输出: 2
问题分析
利用小顶堆
- 首先根据开始时间进行排序
- 数据中存入会议结束时间
- 新进会议的开始时间与结束时间比较,
如果大于则pop(),然后再push()
如果小于则push(),即新开一个会议
解题思路1
class Solution {
public:
int minMeetingRooms(vector<vector<int>>& intervals) {
if (intervals.empty())
{
return 0;
}
//进行从小到大排序
sort(intervals.begin(), intervals.end());
//构建小顶堆
priority_queue<int, vector<int>, greater<int>> store;
for (auto val : intervals)
{
if (!store.empty() && store.top() <= val[0])
{
store.pop();
}
store.push(val[1]);
}
return store.size();
}
};
网友评论