[LeetCode] Merge Intervals

来源:互联网 发布:网络摄像头监控软件( 编辑:程序博客网 时间:2024/05/18 03:52

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; } * } */public class Solution {    public List<Interval> merge(List<Interval> intervals) {        if(intervals.size() <= 1){            return intervals;        }        Collections.sort(intervals,new Comparator<Interval>(){                                        public int compare(Interval i1, Interval i2){                                            if(i1.start < i2.start){                                                return -1;                                            }                                            else if(i1.start == i2.start){                                                return 0;                                            }                                            else{                                                return 1;                                            }                                        }                                    });        ListIterator<Interval> iter = intervals.listIterator();        Interval pre = iter.next();        Interval cur = null;        while(iter.hasNext()){            cur = iter.next();            if(!(cur.start > pre.end)){                pre.end = Math.max(pre.end, cur.end);                pre.start = Math.min(pre.start, cur.start);                iter.remove();            }            else{                pre = cur;            }                    }        return intervals;    }}

0 0
原创粉丝点击