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

来源:互联网 发布:淘宝ulzzang短发女模特 编辑:程序博客网 时间:2024/05/22 03:49

原题目

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

public List<Interval> merge(List<Interval> intervals) {    if(intervals==null||intervals.size()==0){        return intervals;    }    Collections.sort(intervals,new Cmp());    Interval last=intervals.get(0);    for(int i=1;i<intervals.size();i++){        Interval current=intervals.get(i);        if(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<Interval>{        @Override        public int compare(Interval o1,Interval o2){            return o1.start-o2.start;        }}