Data Structures19 sections · 729 units
Open in Course

Meeting Rooms Solution

Sort and check adjacent

Sort by start time, then check if any meeting starts before the previous ends:

function canAttendMeetings(intervals)
    sort intervals by start time

    for i from 1 to length - 1
        if intervals[i].start < intervals[i-1].end then
            return false

    return true

After sorting, if no adjacent pairs overlap, then no pairs overlap at all. Why? If meeting jj overlaps with meeting ii (where j>i+1j > i + 1), then meeting i+1i+1 must also overlap with meeting ii. After sorting, intervals[i+1].start <= intervals[j].start. So if intervals[i].end > intervals[j].start, then intervals[i].end > intervals[i+1].start too.

Time: O(nlogn)O(n \log n). Space: O(1)O(1) if sorting in place.