Greedy Algorithms8 sections · 316 units
Open in Course

Insert Interval - Implementation

The code

function insert(intervals, newInterval)
 result := []
 i := 0
 n := length of intervals

 // Phase 1: intervals ending before newInterval starts
 while i < n and intervals[i].end < newInterval.start
 result.append(intervals[i])
 i := i + 1

 // Phase 2: merge overlapping intervals
 while i < n and intervals[i].start <= newInterval.end
 newInterval.start := min(newInterval.start, intervals[i].start)
 newInterval.end := max(newInterval.end, intervals[i].end)
 i := i + 1
 result.append(newInterval)

 // Phase 3: remaining intervals
 while i < n
 result.append(intervals[i])
 i := i + 1

 return result

O(n)O(n) time, O(n)O(n) space.