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