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