Meeting Rooms (Can Attend All Meetings)

Meeting Rooms (LeetCode 252): sort meetings by start and check that none overlaps the previous one. O(n log n), Python/Java/C++.

Problem Statement

Given meeting time intervals [start, end], determine whether a person can attend all meetings (i.e. no two meetings overlap).

Example

Input:  [[0,30],[5,10],[15,20]]
Output: false  (0-30 overlaps 5-10)

Approach

Sort the meetings by start time. If any meeting starts before the previous one ends, there is a conflict and the answer is false. If the scan finishes with no conflict, all meetings fit.

Complexity

  • Time: O(n log n)
  • Space: O(1)

Solution Code

Python

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

Java

boolean canAttendMeetings(int[][] intervals) {
    Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
    for (int i = 1; i < intervals.length; i++)
        if (intervals[i][0] < intervals[i - 1][1]) return false;
    return true;
}

C++

bool canAttendMeetings(vector<vector<int>>& intervals) {
    sort(intervals.begin(), intervals.end());
    for (int i = 1; i < (int)intervals.size(); i++)
        if (intervals[i][0] < intervals[i - 1][1]) return false;
    return true;
}

Key Takeaways

  • Sorting by start reduces overlap-checking to comparing neighbours.
  • Overlap means current start < previous end.
  • Reference: LeetCode 252 (Meeting Rooms).
Written by Lorens Mishra

Software Engineer Notes Management System Administrator

Discussion

0 comments
Sign in to join the discussion.

No comments yet. Be the first to say something.