【题目】
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) {
int n = intervals.size();
if(n<2) return intervals;
LinkedList<Interval> res = new LinkedList<Interval>();
Collections.sort(intervals,new Comparator<Interval>(){
public int compare(Interval o1, Interval o2){
return o1.start-o2.start;
}
});
int left = intervals.get(0).start;
int right = intervals.get(0).end;
int m = 0;
for(int i = 1; i<n; i++){
if(intervals.get(i).start <= right&&intervals.get(i).end >= left){
if(intervals.get(i).end>right){
right = intervals.get(i).end;
m = i;
}
if(intervals.get(i).start<left)
{
left = intervals.get(i).start;
m = i;
}
}
else{
Interval temp = new Interval(left,right);
res.add(temp);
left=intervals.get(i).start;
right=intervals.get(i).end;
}
}
Interval temp = new Interval(left,right);
res.add(temp);
return res;
}