forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmike2ox.ts
27 lines (22 loc) ยท 939 Bytes
/
mike2ox.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* Source: https://leetcode.com/problems/merge-intervals/
* ํ์ด๋ฐฉ๋ฒ: ์ ๋ นํ ์ฒซ๋ฒ์งธ ๊ตฌ๊ฐ ์ถ๊ฐํ๊ณ ์ดํ ์ํํ๋ฉด์ ๊ฒน์น๋์ง ํ์ธ ํ ๋ณํฉ or ์ถ๊ฐ
* ์๊ฐ๋ณต์ก๋: O(NlogN) - ์ ๋ ฌ์์ NlogN
* ๊ณต๊ฐ๋ณต์ก๋: O(N) - ๊ฒฐ๊ณผ ์ ์ฅํ ๊ณต๊ฐ
*/
function merge(intervals: number[][]): number[][] {
if (intervals.length <= 1) return intervals;
intervals.sort((a, b) => a[0] - b[0]);
const result: number[][] = [intervals[0]];
for (let i = 1; i < intervals.length; i++) {
const current = intervals[i];
const lastMerged = result[result.length - 1];
// ํ์ฌ ๊ตฌ๊ฐ์ ์์์ ์ด ์ด์ ๊ตฌ๊ฐ์ ๋์ ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด merge
if (current[0] <= lastMerged[1]) {
lastMerged[1] = Math.max(lastMerged[1], current[1]); // ๋์ ์ ๋ ๊ตฌ๊ฐ์ ๋์ ์ค ๋ ํฐ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธ
} else {
result.push(current);
}
}
return result;
}