File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .ArrayList ;
2
+ import java .util .List ;
3
+
4
+ class Solution {
5
+
6
+ // 시간, 공간복잡도: O(n)
7
+ public int [][] insert (int [][] intervals , int [] newInterval ) {
8
+
9
+ // 병합된 interval 담는 list
10
+ List <int []> modifyIntervals = new ArrayList <>();
11
+
12
+ int idx = 0 ;
13
+
14
+ // 병합 이전 구간
15
+ while (idx < intervals .length && intervals [idx ][1 ] < newInterval [0 ]) {
16
+ modifyIntervals .add (intervals [idx ]);
17
+ idx ++;
18
+ }
19
+
20
+ // 병합이 필요한 구간 (newInterval과 겹치는 구간)
21
+ while (idx < intervals .length && intervals [idx ][0 ] <= newInterval [1 ]) {
22
+ newInterval [0 ] = Math .min (intervals [idx ][0 ], newInterval [0 ]);
23
+ newInterval [1 ] = Math .max (intervals [idx ][1 ], newInterval [1 ]);
24
+ idx ++;
25
+ }
26
+
27
+ // 최종 병합된 새로운 interval add
28
+ modifyIntervals .add (newInterval );
29
+
30
+ // 병합 이후 구간
31
+ while (idx < intervals .length ) {
32
+ modifyIntervals .add (intervals [idx ]);
33
+ idx ++;
34
+ }
35
+
36
+ return modifyIntervals .toArray (new int [modifyIntervals .size ()][2 ]);
37
+ }
38
+ }
39
+
You can’t perform that action at this time.
0 commit comments