扫描线法,对于每个区间,我们先进行排序,遇到开始节点说明要申请一个会议
遇到结束节点说明结束一个会议,统计最多的时候需要开几个会议室
由于会议的开始时间一定在结束时间之前,所以这样的做法成立
def minMeetingRooms(self, intervals):
points = []
for interval in intervals:
points.append((interval.start, 1))
points.append((interval.end, -1))
meeting_rooms = 0
ongoing_meetings = 0
for _, delta in sorted(points):
ongoing_meetings += delta
meeting_rooms = max(meeting_rooms, ongoing_meetings)
return meeting_rooms