truongductri01
Posted on June 6, 2023
Problem Source: 252. Meeting Rooms
1. Understand the problem
We need to determine whether the user could attend all meetings without any conflict or not.
2 meeting a
and b
will conflict with each other if there is any overlap between a
and b
.
Here are 2 valid situation that a
and b
do not conflict each other:
- a.start >= b.end
- b.start >= a.end (this means that one meeting start after the other ends)
Other situations will resolved in an overlap situation.
2. Solution
When dealing with interval problems, we need to sort the meeting times in ascending order of start time followed by the ascending order of end time.
With this, when consider 2 interval I1
and I2
, if I2.start
is less than I1.end
, they overlap.
Here is the code:
class Solution {
public boolean canAttendMeetings(int[][] intervals) {
/**
If the meetings time overlapped, return no.
*/
if (intervals.length <= 1) {
return true;
}
Arrays.sort(intervals, (a, b) -> a[0] == b[0]? a[1] - b[1]: a[0] - b[0]);
for (int i = 0; i < intervals.length - 1; i++) {
int[] interval1 = intervals[i];
int[] interval2 = intervals[i + 1];
if (interval2[0] < interval1[1]) {
return false;
}
}
return true;
}
}
💖 💪 🙅 🚩
truongductri01
Posted on June 6, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.