Skip to content

Commit f513c0c

Browse files
committed
feat: Upload merge-intervals (typescript)
1 parent 42fc76d commit f513c0c

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

โ€Žmerge-intervals/mike2ox.ts

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Source: https://leetcode.com/problems/merge-intervals/
3+
* ํ’€์ด๋ฐฉ๋ฒ•: ์ •๋ นํ›„ ์ฒซ๋ฒˆ์งธ ๊ตฌ๊ฐ„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ดํ›„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฒน์น˜๋Š”์ง€ ํ™•์ธ ํ›„ ๋ณ‘ํ•ฉ or ์ถ”๊ฐ€
4+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(NlogN) - ์ •๋ ฌ์—์„œ NlogN
5+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(N) - ๊ฒฐ๊ณผ ์ €์žฅํ•  ๊ณต๊ฐ„
6+
*/
7+
8+
function merge(intervals: number[][]): number[][] {
9+
if (intervals.length <= 1) return intervals;
10+
11+
intervals.sort((a, b) => a[0] - b[0]);
12+
const result: number[][] = [intervals[0]];
13+
14+
for (let i = 1; i < intervals.length; i++) {
15+
const current = intervals[i];
16+
const lastMerged = result[result.length - 1];
17+
18+
// ํ˜„์žฌ ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘์ ์ด ์ด์ „ ๊ตฌ๊ฐ„์˜ ๋์ ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด merge
19+
if (current[0] <= lastMerged[1]) {
20+
lastMerged[1] = Math.max(lastMerged[1], current[1]); // ๋์ ์„ ๋‘ ๊ตฌ๊ฐ„์˜ ๋์  ์ค‘ ๋” ํฐ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ
21+
} else {
22+
result.push(current);
23+
}
24+
}
25+
26+
return result;
27+
}

0 commit comments

Comments
ย (0)