Blogs Hub

by Sumit Chourasia | Oct 31, 2020 | Category :coding | Tags : algorithm array data-structure leetcode medium

Insert Interval - Array - Medium - LeetCode

Insert Interval - Array - Medium - LeetCode

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:

Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]
Example 2:

Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Output: [[1,2],[3,10],[12,16]]
Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10].
Example 3:

Input: intervals = [], newInterval = [5,7]
Output: [[5,7]]
Example 4:

Input: intervals = [[1,5]], newInterval = [2,3]
Output: [[1,5]]
Example 5:

Input: intervals = [[1,5]], newInterval = [2,7]
Output: [[1,7]]
 

Constraints:

0 <= intervals.length <= 104
intervals[i].length == 2
0 <= intervals[i][0] <= intervals[i][1] <= 105
intervals is sorted by intervals[i][0] in ascending order.
newInterval.length == 2
0 <= newInterval[0] <= newInterval[1] <= 105

public class Solution {
    public int[][] Insert(int[][] intervals, int[] newInterval) {
        var res = new List<int[]>();
        if(intervals.Length==0){
            res.Add(newInterval);
            return res.ToArray();
        }
                
        int start = 0;
        int end = 0;
        int i=0;
        for(i=0;i<intervals.Length && intervals[i][1] < newInterval[0];i++){
            if(intervals[i][1]<newInterval[0]){
                res.Add(new int[]{intervals[i][0], intervals[i][1]});
            }                
        }
        
        for(;i<intervals.Length && intervals[i][0]<= newInterval[1];i++){
            newInterval[0]=Math.Min(newInterval[0], intervals[i][0]);
            newInterval[1]=Math.Max(newInterval[1], intervals[i][1]);
        }
        
        res.Add(newInterval);
        
        for(;i<intervals.Length;i++){
            res.Add(new int[]{intervals[i][0], intervals[i][1]});
        }        
        
        
        return res.ToArray();
    }
}

Time Complexity: O(n)

Space Complexity: O(n)