File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import List
2+
3+
4+ # Definition of Interval:
5+ class Interval (object ):
6+ def __init__ (self , start , end ):
7+ self .start = start
8+ self .end = end
9+
10+
11+ class Solution :
12+ """
13+ @param intervals: an array of meeting time intervals
14+ @return: the minimum number of conference rooms required
15+ """
16+
17+ def min_meeting_rooms (self , intervals : List [Interval ]) -> int :
18+ if not intervals :
19+ return 0
20+
21+ start_times = sorted ([i .start for i in intervals ])
22+ end_times = sorted ([i .end for i in intervals ])
23+
24+ start_pointer , end_pointer = 0 , 0
25+ used_rooms = 0
26+
27+ while start_pointer < len (intervals ):
28+ # If there is a meeting that has ended by the time the meeting at `start_pointer` starts
29+ if start_times [start_pointer ] >= end_times [end_pointer ]:
30+ used_rooms -= 1
31+ end_pointer += 1
32+
33+ # We do this irrespective of whether a room frees up or not.
34+ # If a room got free, then this used_rooms += 1 wouldn't have any effect.
35+ # used_rooms would remain the same in that case.
36+ used_rooms += 1
37+ start_pointer += 1
38+
39+ return used_rooms
You can’t perform that action at this time.
0 commit comments