Meeting Rooms

easy array sorting intervals

Problem

Given an array of meeting time intervals [start, end), decide whether one person could attend every meeting — that is, no two meetings overlap.

Sort by start time, then sweep: a conflict appears the first time intervals[i].start < intervals[i − 1].end.

Inputintervals = [[0,30],[5,10],[15,20]]
Outputfalse
[0,30] overlaps with [5,10].

def can_attend(intervals):
    intervals.sort(key=lambda iv: iv[0])
    for i in range(1, len(intervals)):
        if intervals[i][0] < intervals[i - 1][1]:
            return False
    return True
function canAttendMeetings(intervals) {
  intervals.sort((a, b) => a[0] - b[0]);
  for (let i = 1; i < intervals.length; i++) {
    if (intervals[i][0] < intervals[i - 1][1]) return false;
  }
  return true;
}
class Solution {
    public 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;
    }
}
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;
}
Time: O(n log n) Space: O(1)