304 North Cardinal St.
Dorchester Center, MA 02124

# Insert Interval LeetCode Solution

## Problem – Insert Interval LeetCode Solution

You are given an array of non-overlapping intervals `intervals` where `intervals[i] = [starti, endi]` represent the start and the end of the `ith` interval and `intervals` is sorted in ascending order by `starti`. You are also given an interval `newInterval = [start, end]` that represents the start and end of another interval.

Insert `newInterval` into `intervals` such that `intervals` is still sorted in ascending order by `starti` and `intervals` still does not have any overlapping intervals (merge overlapping intervals if necessary).

Return `intervals` after the insertion.

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

Constraints:

• `0 <= intervals.length <= 104`
• `intervals[i].length == 2`
• `0 <= starti <= endi <= 105`
• `intervals` is sorted by `starti` in ascending order.
• `newInterval.length == 2`
• `0 <= start <= end <= 105`

## Insert Interval LeetCode Solution in Java

``````public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
int i = 0;
// add all the intervals ending before newInterval starts
while (i < intervals.size() && intervals.get(i).end < newInterval.start)
// merge all overlapping intervals to one considering newInterval
while (i < intervals.size() && intervals.get(i).start <= newInterval.end) {
newInterval = new Interval( // we could mutate newInterval here also
Math.min(newInterval.start, intervals.get(i).start),
Math.max(newInterval.end, intervals.get(i).end));
i++;
}
return result;
}
``````

## Insert Interval LeetCode Solution in Python

``````def insert(self, intervals, newInterval):
s, e = newInterval.start, newInterval.end
left = [i for i in intervals if i.end < s]
right = [i for i in intervals if i.start > e]
if left + right != intervals:
s = min(s, intervals[len(left)].start)
e = max(e, intervals[~len(right)].end)
return left + [Interval(s, e)] + right
``````

## Insert Interval LeetCode Solution in C++

``````class Solution {
public:
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
vector<Interval> res;
int index = 0;
while(index < intervals.size() && intervals[index].end < newInterval.start){
res.push_back(intervals[index++]);
}
while(index < intervals.size() && intervals[index].start <= newInterval.end){
newInterval.start = min(newInterval.start, intervals[index].start);
newInterval.end = max(newInterval.end, intervals[index].end);
index++;
}
res.push_back(newInterval);
while(index < intervals.size()){
res.push_back(intervals[index++]);
}
return res;
}
};
``````
##### Insert Interval LeetCode Solution Review:

In our experience, we suggest you solve this Insert Interval LeetCode Solution and gain some new skills from Professionals completely free and we assure you will be worth it.

If you are stuck anywhere between any coding problem, just visit Queslers to get the Insert Interval LeetCode Solution

Find on Leetcode

##### Conclusion:

I hope this Insert Interval LeetCode Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.

This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.

Keep Learning!

More Coding Solutions >>

LeetCode Solutions

Hacker Rank Solutions

CodeChef Solutions