Skip to content

Commit 3092dfb

Browse files
committed
add Merge Intervals solution
1 parent 6d67a79 commit 3092dfb

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

merge-intervals/HoonDongKang.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
* [Problem]: [56] Merge Intervals
3+
* (https://leetcode.com/problems/merge-intervals/description/)
4+
*/
5+
function merge(intervals: number[][]): number[][] {
6+
//시간복잡도 O(n^2)
7+
//공간복잡도 O(n)
8+
function bruteForceFunc(intervals: number[][]): number[][] {
9+
const result: number[][] = [];
10+
const visited = new Set<number>();
11+
12+
for (let i = 0; i < intervals.length; i++) {
13+
if (visited.has(i)) continue;
14+
visited.add(i);
15+
16+
while (true) {
17+
let hasMerged = false;
18+
for (let j = 0; j < intervals.length; j++) {
19+
if (visited.has(j)) continue;
20+
21+
const [curA, curB] = intervals[i];
22+
const [nextA, nextB] = intervals[j];
23+
24+
if (curA <= nextB && nextA <= curB) {
25+
visited.add(j);
26+
intervals[i] = [Math.min(curA, nextA), Math.max(curB, nextB)];
27+
28+
hasMerged = true;
29+
}
30+
}
31+
if (!hasMerged) break;
32+
}
33+
result.push(intervals[i]);
34+
}
35+
return result;
36+
}
37+
38+
//시간복잡도 O(nlog n)
39+
//공간복잡도 O(n)
40+
function sortFunc(intervals: number[][]): number[][] {
41+
if (!intervals.length) return intervals;
42+
intervals.sort((a, b) => a[0] - b[0]);
43+
44+
const result: number[][] = [intervals[0]];
45+
for (let i = 0; i < intervals.length; i++) {
46+
const prev = result[result.length - 1];
47+
const cur = intervals[i];
48+
49+
if (cur[0] <= prev[1]) {
50+
prev[1] = Math.max(prev[1], cur[1]);
51+
} else {
52+
result.push(cur);
53+
}
54+
}
55+
56+
return result;
57+
}
58+
}

0 commit comments

Comments
 (0)