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

*252. Meeting Rooms

Last updated