Skip to Content

Meeting Rooms II - Interval scheduling

Home | Coding Interviews | Stacks and Queues | Meeting Rooms II - Interval scheduling

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

class Solution:
  def minMeetingRooms(self, intervals: List[Interval]) -> bool:
  intervals.sort(key=lambda i: i.start)
      for i in range(1, len(intervals)):
          i1 = intervals[i - 1]
          i2 = intervals[i]
  
          if i1.end > i2.start:
              return False
      return True

#gigabrain solution
class Solution:
    def minMeetingRooms(self, intervals: List[List[int]]) -> int:
        delta = [0] * 1000010
        for start, end in intervals:
            delta[start] += 1
            delta[end] -= 1
        return max(accumulate(delta))

#cute line trace solution
class Solution2(object):
  def minMeetingRooms(self, intervals):
    meetings = []
    for i in intervals:
      meetings.append((i.start, 1))
      meetings.append((i.end, 0))
    meetings.sort()
    ans = 0
    count = 0
    for meeting in meetings:
      if meeting[1] == 1:
        count += 1
      else:
        count -= 1
      ans = max(ans, count)
    return ans

Posted by Jamie Meyer 19 days ago