Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].
public List<Interval> merge(List<Interval> intervals) {
List<Interval> tmpList = new ArrayList<Interval>();
//为空
if(intervals.size() == 0) return tmpList;
//排序
Collections.sort(intervals, new Comparator<Interval>() {
public int compare(Interval o1, Interval o2) {
return o1.start - o2.start;
}
});
//添加第一个进去
tmpList.add(intervals.get(0));
//获取长度
int length = intervals.size();
//循环list
for (int i = 1; i < length; i++) {
if (intervals.get(i).start <= tmpList.get(tmpList.size() - 1).end) {
tmpList.get(tmpList.size() - 1).end = Math.max(tmpList.get(tmpList.size() - 1).end,intervals.get(i).end);
} else {
Interval interval = new Interval(intervals.get(i).start, intervals.get(i).end);
tmpList.add(interval);
}
}
return tmpList;
}