|
5 | 5 | import java.util.ArrayList;
|
6 | 6 | import java.util.List;
|
7 | 7 |
|
8 |
| -/** |
9 |
| - * 57. Insert Interval |
10 |
| - * |
11 |
| - * Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). |
12 |
| -
|
13 |
| - You may assume that the intervals were initially sorted according to their start times. |
14 |
| -
|
15 |
| - Example 1: |
16 |
| - Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9]. |
17 |
| -
|
18 |
| - Example 2: |
19 |
| - Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16]. |
20 |
| -
|
21 |
| - This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10]. |
22 |
| - */ |
23 | 8 | public class _57 {
|
24 | 9 |
|
25 |
| - public static class Solution1 { |
26 |
| - public List<Interval> insert(List<Interval> intervals, Interval newInterval) { |
27 |
| - List<Interval> result = new ArrayList<>(); |
28 |
| - int i = 0; |
29 |
| - // add all the intervals ending before newInterval starts |
30 |
| - while (i < intervals.size() && intervals.get(i).end < newInterval.start) { |
31 |
| - result.add(intervals.get(i++)); |
32 |
| - } |
33 |
| - // merge all overlapping intervals to one considering newInterval |
34 |
| - while (i < intervals.size() && intervals.get(i).start <= newInterval.end) { |
35 |
| - newInterval = new Interval( // we could mutate newInterval here also |
36 |
| - Math.min(newInterval.start, intervals.get(i).start), |
37 |
| - Math.max(newInterval.end, intervals.get(i).end)); |
38 |
| - i++; |
39 |
| - } |
40 |
| - result.add(newInterval); |
41 |
| - // add all the rest |
42 |
| - while (i < intervals.size()) { |
43 |
| - result.add(intervals.get(i++)); |
44 |
| - } |
45 |
| - return result; |
| 10 | + public static class Solution1 { |
| 11 | + public List<Interval> insert(List<Interval> intervals, Interval newInterval) { |
| 12 | + List<Interval> result = new ArrayList<>(); |
| 13 | + int i = 0; |
| 14 | + // add all the intervals ending before newInterval starts |
| 15 | + while (i < intervals.size() && intervals.get(i).end < newInterval.start) { |
| 16 | + result.add(intervals.get(i++)); |
| 17 | + } |
| 18 | + // merge all overlapping intervals to one considering newInterval |
| 19 | + while (i < intervals.size() && intervals.get(i).start <= newInterval.end) { |
| 20 | + newInterval = new Interval( // we could mutate newInterval here also |
| 21 | + Math.min(newInterval.start, intervals.get(i).start), |
| 22 | + Math.max(newInterval.end, intervals.get(i).end)); |
| 23 | + i++; |
| 24 | + } |
| 25 | + result.add(newInterval); |
| 26 | + // add all the rest |
| 27 | + while (i < intervals.size()) { |
| 28 | + result.add(intervals.get(i++)); |
| 29 | + } |
| 30 | + return result; |
| 31 | + } |
46 | 32 | }
|
47 |
| - } |
48 | 33 | }
|
0 commit comments