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].
思路: 每一个Interval,要判断是否有前后相交
JAVA 代码:
- public List<Interval> merge(List<Interval> intervals) {
- Comparator comparator = new MyComparator();
- Collections.sort(intervals,comparator);
- List<Interval> res = new ArrayList<Interval>();
- if(intervals==null) return res;
- int lz = intervals.size();
- if(lz==0) return res;
- int i=0;
- while(i<lz) {
- int start=intervals.get(i).start;
- int end=intervals.get(i).end;
- while(i+1<lz && intervals.get(i+1).start<=end) {
- end=Math.max(intervals.get(i+1).end,end);
- i++;
- }
- res.add(new Interval(start,end));
- i++;
- }
- return res;
- }
- public class MyComparator implements Comparator<Interval> {
- public int compare(Interval emp1, Interval emp2){
- return emp1.start - emp2.start;
- }
- }
可以考虑改进,不占用额外的空间。

浙公网安备 33010602011771号