File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change
1
+ // TC: O(n)
2
+ // SC: O(n)
3
+ function insert ( intervals : number [ ] [ ] , newInterval : number [ ] ) : number [ ] [ ] {
4
+ const result : number [ ] [ ] = [ ] ;
5
+ const n = intervals . length ;
6
+ let i = 0 ;
7
+
8
+ // Add all intervals that come before newInterval
9
+ while ( i < n && intervals [ i ] [ 1 ] < newInterval [ 0 ] ) {
10
+ result . push ( intervals [ i ] ) ;
11
+ i ++ ;
12
+ }
13
+
14
+ // Merge all overlapping intervals with newInterval
15
+ while ( i < n && intervals [ i ] [ 0 ] <= newInterval [ 1 ] ) {
16
+ newInterval [ 0 ] = Math . min ( intervals [ i ] [ 0 ] , newInterval [ 0 ] ) ;
17
+ newInterval [ 1 ] = Math . max ( intervals [ i ] [ 1 ] , newInterval [ 1 ] ) ;
18
+ i ++ ;
19
+ }
20
+
21
+ result . push ( newInterval ) ;
22
+
23
+ // Add remaining intervals after newInterval
24
+ while ( i < n ) {
25
+ result . push ( intervals [ i ] ) ;
26
+ i ++ ;
27
+ }
28
+
29
+ return result ;
30
+ }
31
+
You can’t perform that action at this time.
0 commit comments