Merge Intervals

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

  • Time: O(n)
  • Space: O(1)
public List<Interval> merge(List<Interval> intervals) {
    if (intervals.size() <= 1) {
        return intervals;
    }
    Collections.sort(intervals, (a, b) -> a.start - b.start);
    List<Interval> ret = new ArrayList<>();
    Interval pre = intervals.get(0);
    for (int i = 1; i < intervals.size(); i++) {
        Interval cur = intervals.get(i);
        if (pre.end < cur.start) {
            ret.add(pre);
            pre = cur;
        } else {
            pre.end = Math.max(cur.end, pre.end);
        }
    }
    ret.add(pre);
    return ret;
}

results matching ""

    No results matching ""