arcbjorn

thoughtbook

RSS Feed

Sunday, February 26, 2023

Insert interval

Leetcode 57 problem.

Go

  • Time complexity: O(n)O(n) - n is a length of a string
  • Auxiliary space: O(n)O(n) - n is a length of a string
func max(x, y int) int {
    if x > y {
        return x
    }

    return y
}

func min(x, y int) int {
    if x < y {
        return x
    }
    
    return y
}

func insert(intervals [][]int, newInterval []int) [][]int {
    left, right := [][]int{}, [][]int{}
    start, end := newInterval[0], newInterval[1]
    
    for _, interval := range intervals {
        if interval[1] < start {
            left = append(left, interval)
        } else if interval[0] > end {
            right = append(right, interval)
        } else {
            start = min(start, interval[0])
            end = max(end, interval[1])
        }
    }
    
    mergedInterval := []int{ start, end }
    intervalsUntilMerged := append(left, mergedInterval)
    totalNewIntervals := append(intervalsUntilMerged, right...)

    return totalNewIntervals
}
Creative Commons Licence