253. Meeting Room II
https://leetcode.com/problems/meeting-rooms-ii/
solution
heap
# 每个会议入堆前都判断堆里是否有会议结束,如果有就让它出堆。
class Solution:
def min_meeting_rooms(self, intervals: List[Interval]) -> int:
if not intervals:
return 0
free_rooms = []
intervals.sort(key= lambda x: x.start)
heapq.heappush(free_rooms, intervals[0].end) # 入堆的是结束时间, 便于判断是否已结束
for i in intervals[1:]:
# 注意是if, 不是while. 如果没有overlap, 则可以使用原本的会议室. pop相当于原本占据会议室的人离开
if free_rooms[0] <= i.start:
heapq.heappop(free_rooms)
# 新的会议室加入堆
heapq.heappush(free_rooms, i.end)
return len(free_rooms)时间复杂度:O() 空间复杂度:O()
扫描线
时间复杂度:O() 空间复杂度:O()
前缀和
follow up
Last updated