lintcode-easy-Merge Intervals
Given a collection of intervals, merge all overlapping intervals.
Given intervals => merged intervals:
[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ] ]
按照每个interval的start先排个序,然后用类似insert interval的方法一个个加到存结果的list中去
/** * Definition of Interval: * public class Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ class Solution { /** * @param intervals: Sorted interval list. * @return: A new sorted interval list. */ public List<Interval> merge(List<Interval> intervals) { // write your code here List<Interval> result = new ArrayList<Interval>(); if(intervals == null || intervals.size() == 0) return result; if(intervals.size() == 1) return intervals; Collections.sort(intervals, new MyComparator()); Interval newInterval = intervals.get(0); for(int i = 1; i < intervals.size(); i++){ if(newInterval.end < intervals.get(i).start){ result.add(newInterval); newInterval = intervals.get(i); } else{ newInterval.end = Math.max(newInterval.end, intervals.get(i).end); } } result.add(newInterval); return result; } public class MyComparator implements Comparator<Interval>{ public int compare(Interval in1, Interval in2){ return in1.start - in2.start; } } }