Skip to content

Commit 2007a45

Browse files
committed
56 / Merge Intervals / Medium / 20m
1 parent 799b679 commit 2007a45

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

dudwns0213/9week/56.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
};

0 commit comments

Comments
 (0)