forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTessa1217.java
More file actions
39 lines (29 loc) · 1.13 KB
/
Tessa1217.java
File metadata and controls
39 lines (29 loc) · 1.13 KB
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
38
import java.util.ArrayList;
import java.util.List;
class Solution {
// 시간, 공간복잡도: O(n)
public int[][] insert(int[][] intervals, int[] newInterval) {
// 병합된 interval 담는 list
List<int[]> modifyIntervals = new ArrayList<>();
int idx = 0;
// 병합 이전 구간
while (idx < intervals.length && intervals[idx][1] < newInterval[0]) {
modifyIntervals.add(intervals[idx]);
idx++;
}
// 병합이 필요한 구간 (newInterval과 겹치는 구간)
while (idx < intervals.length && intervals[idx][0] <= newInterval[1]) {
newInterval[0] = Math.min(intervals[idx][0], newInterval[0]);
newInterval[1] = Math.max(intervals[idx][1], newInterval[1]);
idx++;
}
// 최종 병합된 새로운 interval add
modifyIntervals.add(newInterval);
// 병합 이후 구간
while (idx < intervals.length) {
modifyIntervals.add(intervals[idx]);
idx++;
}
return modifyIntervals.toArray(new int[modifyIntervals.size()][2]);
}
}