链接: https://leetcode-cn.com/problems/meeting-rooms-ii/
题意
给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回所需会议室的最小数量 。
解法
将会议时间按开始时间由小到大进行排序,对于这个问题
我们可以考虑对于每一个会议,需要安排一个会议室
那显然是找一个结束最早的会议,看看当前会议的开始时前一个会议是否结束
所以可以维护一个优先队列,每次取堆顶看看是否小于当前会议的开始时间
另一个解法是可以将这个问题视作公交上车问题1
2↑ ↑ ↓ ↑ ↓ ↓
0----5----10----15-----20-----------30-->
用一个map存储每个时间段的上车和下车情况,然后从前往后遍历,找出人数最多的时刻即为最多所需要的会议室数量
代码
优先队列
1 | class Solution { |
上下车算法
1 | class Solution { |