題目描述
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].
java實現
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
ArrayList<Interval> results = new ArrayList<Interval>();// 結果集合,存放符合要求的interval
if (intervals.size() < 2)
return intervals;
Collections.sort(intervals, new Comparator<Interval>() {// intervals排序,按start的大小升序排列
@Override
public int compare(Interval o1, Interval o2) {
return o1.start - o2.start;
}
});
results.add(intervals.get(0));// 初始化加入第一個interval
for (int i = 1; i < intervals.size(); i++) {
Interval cur = intervals.get(i);
Interval pre = results.get(results.size() - 1);
if (pre.end >= cur.start) {//比較前一個的end值和後一個的start值
pre.end = Math.max(pre.end, cur.end);
results.remove(results.size() - 1);
results.add(pre);
} else {
results.add(cur);
}
}
return results;
}