def minMeetingRooms(self, intervals):
        """
        :type intervals: List[Interval]
        :rtype: int
        """
        timeline = []
        for interval in intervals:
            # meeting root + 1
            timeline.append((interval.start, 1))
            # meeting root - 1
            timeline.append((interval.end, -1))
        # sort by time
        timeline.sort()
        ans = curr = 0
        # go through timeline
        for _, v in timeline:
            curr += v
            # max meeting room used at this point
            ans = max(ans, curr)
        return ans

        :type intervals: List[Interval]
        :rtype: int
        
python/253_Meeting_Rooms_II.py