# 253 Meeting Rooms II

Given an array of meeting time `intervals` intervals where `intervals[i] = [starti, endi]`, return the minimum number of conference rooms required.

Example 1:

``````Input: intervals = [[0,30],[5,10],[15,20]]
Output: 2
``````

Example 2:

``````Input: intervals = [[7,10],[2,4]]
Output: 1
``````

Constraints:

• `1 <= intervals.length <= 104`
• `0 <= starti < endi <= 106`
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 `````` ``````''' Priority Queues ''' class Solution: def minMeetingRooms(self, intervals: List[List[int]]) -> int: used_rooms = [] intervals.sort(key=lambda t: t[0]) heapq.heappush(used_rooms, intervals[0][1]) for i in intervals[1:]: if used_rooms[0] <= i[0]: heapq.heappop(used_rooms) heapq.heappush(used_rooms, i[1]) return len(used_rooms) ''' Chronological Ordering ''' class Solution: def minMeetingRooms(self, intervals: List[List[int]]) -> int: if not intervals: return 0 used_rooms = 0 start_timings = sorted([i[0] for i in intervals]) end_timings = sorted(i[1] for i in intervals) L = len(intervals) end_pointer = 0 start_pointer = 0 while start_pointer < L: if start_timings[start_pointer] >= end_timings[end_pointer]: used_rooms -= 1 end_pointer += 1 used_rooms += 1 start_pointer += 1 return used_rooms``````