题目地址:
https://leetcode.com/problems/meeting-rooms/
给定一列区间(题目保证区间长度为正),问这些区间是否两两不相交。
按右端点排序然后看一下是否有个左边区间的右端点大于右边区间的左端点即可。代码如下:
import java.util.Arrays;
public class Solution {
public boolean canAttendMeetings(int[][] intervals) {
Arrays.sort(intervals, (i1, i2) -> Integer.compare(i1[1], i2[1]));
int end = Integer.MIN_VALUE;
for (int[] interval : intervals) {
if (end > interval[0]) {
return false;
}
end = interval[1];
}
return true;
}
}
时间复杂度 O ( n log n ) O(n\log n) O(nlogn),空间 O ( 1 ) O(1) O(1)。