|
1 | 1 | class Solution {
|
2 |
| - public int[][] insert(int[][] intervals, int[] newInterval) { |
3 |
| - List<int[]> result = new ArrayList<>(); |
4 |
| - int idx = 0; |
5 |
| - int newStart = newInterval[0]; |
6 |
| - int newEnd = newInterval[1]; |
7 |
| - while (idx < intervals.length && newStart > intervals[idx][0]) { |
8 |
| - result.add(intervals[idx++]); |
| 2 | + public int[][] insert(int[][] intervals, int[] newInterval) { |
| 3 | + List<int[]> result = new ArrayList<>(); |
| 4 | + int idx = 0; |
| 5 | + while (idx < intervals.length && intervals[idx][1] < newInterval[0]) { |
| 6 | + result.add(intervals[idx++]); |
| 7 | + } |
| 8 | + while (idx < intervals.length && newInterval[1] >= intervals[idx][0]) { |
| 9 | + newInterval[0] = Math.min(newInterval[0], intervals[idx][0]); |
| 10 | + newInterval[1] = Math.max(newInterval[1], intervals[idx][1]); |
| 11 | + idx++; |
| 12 | + } |
| 13 | + result.add(newInterval); |
| 14 | + while (idx < intervals.length) { |
| 15 | + result.add(intervals[idx++]); |
| 16 | + } |
| 17 | + return result.toArray(new int[result.size()][]); |
9 | 18 | }
|
10 |
| - int[] currInterval = new int[2]; |
11 |
| - if (result.isEmpty() || result.get(result.size() - 1)[1] < newStart) { |
12 |
| - result.add(newInterval); |
13 |
| - } else { |
14 |
| - currInterval = result.remove(result.size() - 1); |
15 |
| - currInterval[1] = Math.max(currInterval[1], newEnd); |
16 |
| - result.add(currInterval); |
17 |
| - } |
18 |
| - while (idx < intervals.length) { |
19 |
| - currInterval = intervals[idx++]; |
20 |
| - int start = currInterval[0]; |
21 |
| - int end = currInterval[1]; |
22 |
| - if (result.get(result.size() - 1)[1] < start) { |
23 |
| - result.add(currInterval); |
24 |
| - } else { |
25 |
| - currInterval = result.remove(result.size() - 1); |
26 |
| - currInterval[1] = Math.max(currInterval[1], end); |
27 |
| - result.add(currInterval); |
28 |
| - } |
29 |
| - } |
30 |
| - return result.toArray(new int[result.size()][2]); |
31 |
| - } |
32 | 19 | }
|
0 commit comments