← Intervals

Drill #114 — Meeting Rooms

Easy Sort + Check Intervals

In plain English: Check if any meetings in your schedule overlap with each other.

Sort by start time, then check each consecutive pair. If any meeting starts before the previous one ends, there's a conflict. Sorting makes the check O(n).

Prompt

Given an array of meeting time intervals [[start, end], ...], determine if a person could attend all meetings (i.e., no two meetings overlap).

Try to write it from scratch before scrolling down.

Solution

def can_attend_meetings(intervals):
    intervals.sort(key=lambda x: x[0])
    for i in range(1, len(intervals)):
        if intervals[i][0] < intervals[i-1][1]:  # overlap
            return False
    return True

# Test: can_attend_meetings([[0,30],[5,10],[15,20]]) == False
# Test: can_attend_meetings([[7,10],[2,4]]) == True
O(n log n) time · O(1) space

Related Micro Drills

← Drill #113