此题现在看来至少有两种做法,一种,自己最开始想到的n平方的做法,另一种,先对数组以开始时间排序,然后比较结束时间,这样一次扫描即可,nlog(n)。
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
public boolean canAttendMeetings(Interval[] intervals) {
Arrays.sort(intervals, new Comparator<Interval>(){
public int compare(Interval i1, Interval i2){
return i1.start - i2.start;
}
});
int maxEnd = Integer.MIN_VALUE;
for (int i = 0; i < intervals.length; i++) {
if (intervals[i].start < maxEnd) {
return false;
}
maxEnd = Math.max(maxEnd, intervals[i].end);
}
return true;
// for (int i = 0; i < intervals.length; i++) {
// //1 for (int j = j + 1; j < intervals.length; j++) {
// for (int j = i + 1; j < intervals.length; j++) {
// Interval current = intervals[i];
// Interval next = intervals[j];
// if (current.end <= next.start || current.start >= next.end) {
// continue;
// } else {
// return false;
// }
// }
// }
// return true;
}
}