Merge Intervals

来源:互联网 发布:喵咪看片软件最新版 编辑:程序博客网 时间:2024/06/06 19:56

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].

/** * Definition for an interval. * public class Interval { *     int start; *     int end; *     Interval() { start = 0; end = 0; } *     Interval(int s, int e) { start = s; end = e; } * } */
首先要实现intervals按照start排序,后一个start小于前一个end则合并。

public class Solution {    public List<Interval> merge(List<Interval> intervals) {        if(intervals==null||intervals.size()<=1)            return intervals;        ArrayList<Interval> at=new ArrayList<Interval>();        Collections.sort(intervals,new implementComparator());        Interval pre=intervals.get(0);        for(int i=1;i<intervals.size();i++){            Interval cur=intervals.get(i);            if(cur.start<=pre.end)                pre.end=Math.max(cur.end,pre.end);            else{                at.add(pre);                pre=cur;            }        }        at.add(pre);        return at;    }}//实现Comparator接口,其中必须有compare方法class implementComparator implements Comparator<Interval>{    public int compare(Interval t1,Interval t2){        return t1.start-t2.start;    }}



0 0
原创粉丝点击