Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...]
(si < ei), determine if a person could attend all meetings.
Example 1:
Input: [[0,30],[5,10],[15,20]]
Output: false
Example 2:
Input: [[7,10],[2,4]]
Output: true
思路:按照start排序,然后看收尾是否重合。需要自己写个比较器;
class Solution {
private class Interval {
public int start;
public int end;
public Interval (int start, int end) {
this.start = start;
this.end = end;
}
}
public boolean canAttendMeetings(int[][] intervals) {
if(intervals == null || intervals.length == 0 || intervals[0].length == 0) {
return true;
}
List<Interval> list = new ArrayList<Interval>();
for(int i = 0; i < intervals.length; i++) {
list.add(new Interval(intervals[i][0], intervals[i][1]));
}
Collections.sort(list, (a, b) ->(a.start - b.start));
Interval pre = list.get(0);
for(int i = 1; i < list.size(); i++) {
Interval cur = list.get(i);
if(pre.end > cur.start) {
return false;
}
pre = cur;
}
return true;
}
}