File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * 중간에 새로운 구간 추가하기
3
+ * 알고리즘 복잡도
4
+ * - 시간 복잡도: O(n)
5
+ * - 공간 복잡도: O(n)
6
+ * @param intervals
7
+ * @param newInterval
8
+ */
9
+ function insert ( intervals : number [ ] [ ] , newInterval : number [ ] ) : number [ ] [ ] {
10
+ if ( intervals . length === 0 ) return [ newInterval ]
11
+ let result : number [ ] [ ] = [ ]
12
+
13
+ let i = 0 ;
14
+
15
+ // 1. newIntervals 이전 구간 추가
16
+ while ( i < intervals . length && intervals [ i ] [ 1 ] < newInterval [ 0 ] ) {
17
+ result . push ( intervals [ i ] )
18
+ i ++
19
+ }
20
+
21
+ // 2. 겹치는 부분 추가
22
+ const merged = [ ...newInterval ]
23
+ while ( i < intervals . length && intervals [ i ] [ 0 ] <= newInterval [ 1 ] ) {
24
+ merged [ 0 ] = Math . min ( merged [ 0 ] , intervals [ i ] [ 0 ] )
25
+ merged [ 1 ] = Math . max ( merged [ 1 ] , intervals [ i ] [ 1 ] )
26
+ i ++
27
+ }
28
+ result . push ( merged )
29
+
30
+ // 3. 이후의 구간 추가
31
+ while ( i < intervals . length ) {
32
+ result . push ( intervals [ i ] )
33
+ i ++
34
+ }
35
+
36
+ return result
37
+ }
38
+
You can’t perform that action at this time.
0 commit comments