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
}