Given an array of meeting time interval objects consisting of start and end times [[start_1,end_1],[start_2,end_2],...] (start_i < end_i), determine if a person could add all meetings to their schedule without any conflicts.
Example 1:
Input: intervals = [(0,30),(5,10),(15,20)]
Output: falseExplanation:
(0,30)and(5,10)will conflict(0,30)and(15,20)will conflict
Example 2:
Input: intervals = [(5,8),(9,15)]
Output: trueNote:
- (0,8),(8,10) is not considered a conflict at 8
Constraints:
0 <= intervals.length <= 5000 <= intervals[i].start < intervals[i].end <= 1,000,000
Approach - sort
- Just sort by start and then check previous end current start
- Time & Space Complexity
Time complexity:O(nlogn)
Space complexity:O(1)orO(n)depending on the sorting algorithm.
/**
* Definition of Interval:
* public class Interval {
* public int start, end;
* public Interval(int start, int end) {
* this.start = start;
* this.end = end;
* }
* }
*/
public class Solution {
public boolean canAttendMeetings(List<Interval> intervals) {
Collections.sort(intervals, Comparator.comparingInt(i -> i.start));
for (int i = 1; i < intervals.size(); i++) {
Interval i1 = intervals.get(i - 1);
Interval i2 = intervals.get(i);
if (i1.end > i2.start) {
return false;
}
}
return true;
}
}