Related: Meeting Rooms II

Intuition

  • Sort by start time, then check if interval i ends after interval j, where
  • If it does, then there is an overlap.

Runtime

where N is the number of intervals

Code

Sort by End time

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

Sort by Start time

class Solution:
    def canAttendMeetings(self, intervals: List[List[int]]) -> bool:
        intervals.sort()
        n = len(intervals)
        for i in range(n - 1):
            if intervals[i][1] > intervals[i + 1][0]:
                return False
        return True

References

Meeting Rooms - NeetCode