File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[][] } intervals
3+ * @return {number[][] }
4+ */
5+
6+ /**
7+ * intervals 배열에서 interval[i] = [start, end] 의 경우 시작점, 끝 점
8+ * 겹치는 구간을 병합해서 겹치지 않는 구간의 배열을 반환해야 하는 문제!
9+ *
10+ * 정렬 후 병합하는 방법, 스위핑을 하는 방법 2가지가 존재한다고 한다.
11+ */
12+
13+ var merge = function ( intervals ) {
14+ if ( intervals . length <= 1 ) return intervals ;
15+
16+ intervals . sort ( ( a , b ) => a [ 0 ] - b [ 0 ] ) ;
17+ // 오름차순 정렬
18+
19+ const result = [ ] ;
20+
21+ let currentInterval = intervals [ 0 ] ;
22+
23+ for ( let i = 1 ; i < intervals . length ; i ++ ) {
24+ const [ start , end ] = intervals [ i ] ;
25+
26+ if ( currentInterval [ 1 ] >= start ) {
27+ currentInterval [ 1 ] = Math . max ( currentInterval [ 1 ] , end ) ;
28+ } else {
29+ result . push ( currentInterval ) ;
30+ currentInterval = intervals [ i ] ;
31+ }
32+ }
33+
34+ result . push ( currentInterval ) ;
35+
36+ return result ;
37+ } ;
You can’t perform that action at this time.
0 commit comments