public class Interval {
int start, end;
Interval(int start, int end) {
this.start = start;
this.end = end;
}
}
public List<Interval> merge(List<Interval> intervals) {
// write your code here
if(intervals.size() <= 1) {
return intervals;
}
Collections.sort(intervals, new Comparator<Interval>() {
@Override
public int compare(Interval o1, Interval o2) {
return o1.start - o2.start;
}
});
List<Interval> result = new ArrayList<Interval>();
Interval temp = intervals.get(0);
for(int i = 1; i < intervals.size(); i++) {
if(temp.end < intervals.get(i).start) {
result.add(temp);
temp = intervals.get(i);
} else {
temp.end = Math.max(temp.end,intervals.get(i).end);
}
}
result.add(temp);
return result;
}
简单题,但是要注意一下思维过程,先排序,然后用类似双指针的方法去比较,注意比较前一个的终点和下一个的起点时不能加等号。