LC 0253 [M] Meeting Rooms II - ALawliet/algorithms GitHub Wiki

class Solution:
    def minMeetingRooms(self, intervals: List[List[int]]) -> int:
        starts = sorted(i[0] for i in intervals)
        ends = sorted(i[1] for i in intervals)

        new_rooms = 0
        first_avail_room = 0
        
        for start in starts:
            if start >= ends[first_avail_room]: 
                first_avail_room += 1 # free, consume room
            else: 
                new_rooms += 1 # unavailable, add room

        return new_rooms