forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathYeomChaeeun.ts
More file actions
38 lines (32 loc) ยท 959 Bytes
/
YeomChaeeun.ts
File metadata and controls
38 lines (32 loc) ยท 959 Bytes
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
28
29
30
31
32
33
34
35
36
37
/**
* ์ค๊ฐ์ ์๋ก์ด ๊ตฌ๊ฐ ์ถ๊ฐํ๊ธฐ
* ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
* - ์๊ฐ ๋ณต์ก๋: O(n)
* - ๊ณต๊ฐ ๋ณต์ก๋: O(n)
* @param intervals
* @param newInterval
*/
function insert(intervals: number[][], newInterval: number[]): number[][] {
if(intervals.length === 0) return [newInterval]
let result: number[][] = []
let i = 0;
// 1. newIntervals ์ด์ ๊ตฌ๊ฐ ์ถ๊ฐ
while(i < intervals.length && intervals[i][1] < newInterval[0]) {
result.push(intervals[i])
i++
}
// 2. ๊ฒน์น๋ ๋ถ๋ถ ์ถ๊ฐ
const merged = [...newInterval]
while(i < intervals.length && intervals[i][0] <= newInterval[1]) {
merged[0] = Math.min(merged[0], intervals[i][0])
merged[1] = Math.max(merged[1], intervals[i][1])
i++
}
result.push(merged)
// 3. ์ดํ์ ๊ตฌ๊ฐ ์ถ๊ฐ
while(i < intervals.length) {
result.push(intervals[i])
i++
}
return result
}