Merge Intervals

Given a collection of intervals, merge all overlapping intervals.

Example 1:

Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].

Example 2:

Input: [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considerred overlapping.

先修改默认的sort 函数来根据start 排序

time o(nlogn)

/**
 * 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; }
 * }
 */
class Solution {
    public List<Interval> merge(List<Interval> intervals) {
        List<Interval> list = new ArrayList<>();
        
        intervals.sort(Comparator.comparing(i -> i.start));
        
        Interval last = null;
        
        for(Interval item : intervals){
            if(last == null || last.end < item.start){
                list.add(item);
                last = item;
            }else{
                last.end = Math.max(last.end,item.end);
                //因为不确定和再下一个是不是存在重合,所以现在还不能加到list里面
                // list.add(last);
                // last = item;
            }
        }
        
        return list;
    }
}

Last updated