1+ class Solution {
2+ public boolean isOverlapping (int s0 , int e0 , int s1 , int e1 ) {
3+ if (s0 <= s1 && e0 >= e1 ) {
4+ return true ;
5+ } else if (s0 >= s1 && e0 <= e1 ) {
6+ return true ;
7+ } else if (e0 >= s1 && e0 <= e1 ) {
8+ return true ;
9+ } else if (s0 >= s1 && s0 <= e1 ) {
10+ return true ;
11+ } else {
12+ return false ;
13+ }
14+ }
15+
16+ public int [][] insert (int [][] intervals , int [] newInterval ) {
17+ int [] tempInterval = new int [100005 ];
18+ int minStart = newInterval [0 ];
19+ int maxStart = newInterval [0 ];
20+ int size = 0 ;
21+
22+ for (int i = 0 ; i < 100005 ; tempInterval [i ] = -1 , i ++);
23+
24+ for (int [] interval : intervals ) {
25+ minStart = Math .min (minStart , interval [0 ]);
26+ maxStart = Math .max (maxStart , interval [0 ]);
27+
28+ if (isOverlapping (interval [0 ], interval [1 ], newInterval [0 ], newInterval [1 ])) {
29+ newInterval [0 ] = Math .min (interval [0 ], newInterval [0 ]);
30+ newInterval [1 ] = Math .max (interval [1 ], newInterval [1 ]);
31+ } else {
32+ tempInterval [interval [0 ]] = interval [1 ];
33+ size ++;
34+ }
35+ }
36+
37+ tempInterval [newInterval [0 ]] = newInterval [1 ];
38+ size ++;
39+
40+ int [][] answer = new int [size ][2 ];
41+
42+ for (int i = minStart , j = 0 ; i <= maxStart ; i ++) {
43+ if (tempInterval [i ] >= 0 ) {
44+ answer [j ][0 ] = i ;
45+ answer [j ++][1 ] = tempInterval [i ];
46+ }
47+ }
48+
49+ return answer ;
50+ }
51+ }
0 commit comments