Insert Interval

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times. Example 1: Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9]. Example 2: Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

  • Time: O(n)
  • Space: O(1)
public List<Interval> insert(List<Interval> intervals, Interval newInt) {
    List<Interval> ret = new ArrayList<>();
    boolean flag = false;
    for (int i = 0; i < intervals.size(); i++) {
        Interval cur = intervals.get(i);
        if (flag || cur.end < newInt.start) {
            ret.add(cur);
        } else if (cur.start > newInt.end) {
            ret.add(newInt);
            ret.add(cur);
            flag = true;
        } else {
            newInt.start = Math.min(cur.start, newInt.start);
            newInt.end = Math.max(cur.end, newInt.end);
        }
    }
    if (!flag) {
        ret.add(newInt);
    }
    return ret;
}

results matching ""

    No results matching ""