Advertisement
jinhuang1102

253. Meeting Rooms II

Dec 26th, 2018
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | None | 0 0
  1. # Definition for an interval.
  2. # class Interval(object):
  3. #     def __init__(self, s=0, e=0):
  4. #         self.start = s
  5. #         self.end = e
  6.  
  7. class Solution(object):
  8.     def minMeetingRooms(self, intervals):
  9.         """
  10.        :type intervals: List[Interval]
  11.        :rtype: int
  12.        """
  13.         if not intervals:
  14.             return 0
  15.        
  16.         # Heap 初始化
  17.         free_rooms = []
  18.        
  19.         # 将输入的list按照升序排序
  20.         intervals.sort(key=lambda x: x.start)
  21.        
  22.         # Add the first meeting
  23.         heapq.heappush(free_rooms, intervals[0].end)
  24.        
  25.         # Go though all remaining meetings
  26.         for i in range(1, len(intervals)):
  27.             # 重点就在于heap的第一个值heap[0]上,因为heap的性质,heap[0]是最小的值。
  28.            
  29.             if free_rooms[0] <= intervals[i].start:
  30.                 # 所以当heap[0]也就是最早结束时间的room <= 下一个meeting的开始时间。
  31.                 # 就把heap[0] 移除,然后插入新的interval。
  32.                
  33.                 heapq.heapreplace(free_rooms, intervals[i].end)
  34.  
  35.             else:
  36.                 # 当heap[0] > 下一个meeting的开始时间,就直接插入新的room
  37.                
  38.                 heapq.heappush(free_rooms, intervals[i].end)
  39.  
  40.            
  41.         return len(free_rooms)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement