Merge Intervals
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].
Solution
- 将所有的interval按照起点进行排序,然后合并。在判断两个interval是否可以合并的时候,只需要判断第一个interval的末端是否超过了第二个interval的起点即可。
public class Solution {
public List<Interval> merge(List<Interval> intervals) {
if(intervals.size()<=1) return intervals;
List<Interval> result = new ArrayList<Interval>();
Collections.sort(intervals,new Comparator<Interval>(){
public int compare(Interval it1, Interval it2){
return it1.start - it2.start;
}
});
Interval it1 = intervals.get(0);
result.add(it1);
for(int i=1;i<intervals.size();i++){
Interval it2 = intervals.get(i);
if(it1.end>=it2.start) it1.end = Math.max(it1.end,it2.end);
else{
it1 = it2;
result.add(it1);
}
}
return result;
}
}