Array----- 56. Merge Intervals(合并区间)

原题目

合并区间,按照题目意思就是前一个与后一个有交叉的话就可以进行合并。那么首先我们要分清楚前后,也就是将区间排序。因为已经提示我们了Interval类,因此在这个类中只能是通过新建比较类来实现,另一中实现Comparable接口的方式不适合这里。 区间有了顺序直接前后合并就行了。



public List merge(List intervals) {
    if(intervals==null||intervals.size()==0){
        return intervals;
    }
    Collections.sort(intervals,new Cmp());
    Interval last=intervals.get(0);
    for(int i=1;iif(last.end>=current.end){
            last.end=Math.max(last.end,current.end);
            intervals.remove(i);
            i--;
        }else {
            last=current;
        }

    }
    return intervals;
}
class Cmp implements Comparator{
        @Override
        public int compare(Interval o1,Interval o2){
            return o1.start-o2.start;
        }
}

你可能感兴趣的:(算法(leetcode实战))