Skip to content

Commit 8190b30

Browse files
refactor 57
1 parent bdf176e commit 8190b30

File tree

2 files changed

+39
-104
lines changed

2 files changed

+39
-104
lines changed

src/main/java/com/fishercoder/solutions/_57.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,39 @@
11
package com.fishercoder.solutions;
22

3-
import com.fishercoder.common.classes.Interval;
4-
53
import java.util.ArrayList;
64
import java.util.List;
75

86
public class _57 {
97

108
public static class Solution1 {
11-
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
12-
List<Interval> result = new ArrayList<>();
9+
public int[][] insert(int[][] intervals, int[] newInterval) {
10+
List<int[]> list = new ArrayList<>();
1311
int i = 0;
1412
// 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++));
13+
while (i < intervals.length && intervals[i][intervals[i].length - 1] < newInterval[0]) {
14+
list.add(intervals[i++]);
1715
}
1816
// 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));
17+
while (i < intervals.length && intervals[i][0] <= newInterval[newInterval.length - 1]) {
18+
newInterval = new int[]{ // we could mutate newInterval here also
19+
Math.min(newInterval[0], intervals[i][0]),
20+
Math.max(newInterval[newInterval.length - 1], intervals[i][intervals[i].length - 1])};
2321
i++;
2422
}
25-
result.add(newInterval);
23+
list.add(newInterval);
2624
// add all the rest
27-
while (i < intervals.size()) {
28-
result.add(intervals.get(i++));
25+
while (i < intervals.length) {
26+
list.add(intervals[i++]);
27+
}
28+
return convertToArray(list);
29+
}
30+
31+
private int[][] convertToArray(List<int[]> list) {
32+
int[][] result = new int[list.size()][list.get(0).length];
33+
for (int i = 0; i < list.size(); i++) {
34+
for (int j = 0; j < list.get(i).length; j++) {
35+
result[i][j] = list.get(i)[j];
36+
}
2937
}
3038
return result;
3139
}
Lines changed: 18 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
package com.fishercoder;
22

3-
import com.fishercoder.common.classes.Interval;
4-
import com.fishercoder.common.utils.CommonUtils;
53
import com.fishercoder.solutions._57;
64
import org.junit.BeforeClass;
75
import org.junit.Test;
86

9-
import java.util.ArrayList;
10-
import java.util.Arrays;
11-
import java.util.List;
12-
137
import static org.junit.Assert.assertEquals;
148

159
public class _57Test {
1610
private static _57.Solution1 solution1;
17-
private static List<Interval> intervals;
18-
private static List<Interval> expected;
19-
private static List<Interval> actual;
2011

2112
@BeforeClass
2213
public static void setup() {
@@ -25,92 +16,28 @@ public static void setup() {
2516

2617
@Test
2718
public void test1() {
28-
intervals = new ArrayList<>(Arrays.asList(new Interval(1, 3), new Interval(6, 9)));
29-
expected = new ArrayList<>(Arrays.asList(new Interval(1, 5), new Interval(6, 9)));
30-
CommonUtils.printIntervals(intervals);
31-
actual = solution1.insert(intervals, new Interval(2, 5));
32-
CommonUtils.printIntervals(actual);
33-
assertEquals(expected, actual);
19+
assertEquals(new int[][]{
20+
{1, 5},
21+
{6, 9}
22+
}, solution1.insert(new int[][]{
23+
{1, 3},
24+
{6, 9}
25+
}, new int[]{2, 5}));
3426
}
3527

3628

3729
@Test
3830
public void test2() {
39-
intervals = new ArrayList<>(Arrays.asList(new Interval(1, 2), new Interval(3, 5), new Interval(6, 7), new Interval(8, 10), new Interval(12, 16)));
40-
CommonUtils.printIntervals(intervals);
41-
expected = new ArrayList<>(Arrays.asList(new Interval(1, 2), new Interval(3, 10), new Interval(12, 16)));
42-
actual = solution1.insert(intervals, new Interval(4, 9));
43-
CommonUtils.printIntervals(actual);
44-
assertEquals(expected, actual);
45-
}
46-
47-
@Test
48-
public void test3() {
49-
intervals = new ArrayList<>(Arrays.asList(new Interval(1, 5)));
50-
CommonUtils.printIntervals(intervals);
51-
expected = new ArrayList<>(Arrays.asList(new Interval(1, 5)));
52-
actual = solution1.insert(intervals, new Interval(2, 3));
53-
CommonUtils.printIntervals(actual);
54-
assertEquals(expected, actual);
55-
}
56-
57-
@Test
58-
public void test4() {
59-
intervals = new ArrayList<>(Arrays.asList());
60-
CommonUtils.printIntervals(intervals);
61-
expected = new ArrayList<>(Arrays.asList(new Interval(5, 7)));
62-
actual = solution1.insert(intervals, new Interval(5, 7));
63-
CommonUtils.printIntervals(actual);
64-
assertEquals(expected, actual);
65-
}
66-
67-
@Test
68-
public void test5() {
69-
intervals = new ArrayList<>(Arrays.asList(new Interval(1, 5)));
70-
expected = new ArrayList<>(Arrays.asList(new Interval(1, 5), new Interval(6, 8)));
71-
CommonUtils.printIntervals(intervals);
72-
actual = solution1.insert(intervals, new Interval(6, 8));
73-
CommonUtils.printIntervals(actual);
74-
assertEquals(expected, actual);
75-
}
76-
77-
@Test
78-
public void test6() {
79-
intervals = new ArrayList<>(Arrays.asList(new Interval(1, 5)));
80-
expected = new ArrayList<>(Arrays.asList(new Interval(0, 5)));
81-
CommonUtils.printIntervals(intervals);
82-
actual = solution1.insert(intervals, new Interval(0, 3));
83-
CommonUtils.printIntervals(actual);
84-
assertEquals(expected, actual);
85-
}
86-
87-
@Test
88-
public void test7() {
89-
intervals = new ArrayList<>(Arrays.asList(new Interval(1, 5)));
90-
expected = new ArrayList<>(Arrays.asList(new Interval(0, 0), new Interval(1, 5)));
91-
CommonUtils.printIntervals(intervals);
92-
actual = solution1.insert(intervals, new Interval(0, 0));
93-
CommonUtils.printIntervals(actual);
94-
assertEquals(expected, actual);
95-
}
96-
97-
@Test
98-
public void test8() {
99-
intervals = new ArrayList<>(Arrays.asList(new Interval(2, 5), new Interval(6, 7), new Interval(8, 9)));
100-
expected = new ArrayList<>(Arrays.asList(new Interval(0, 1), new Interval(2, 5), new Interval(6, 7), new Interval(8, 9)));
101-
CommonUtils.printIntervals(intervals);
102-
actual = solution1.insert(intervals, new Interval(0, 1));
103-
CommonUtils.printIntervals(actual);
104-
assertEquals(expected, actual);
105-
}
106-
107-
@Test
108-
public void test9() {
109-
intervals = new ArrayList<>(Arrays.asList(new Interval(2, 4), new Interval(5, 7), new Interval(8, 10), new Interval(11, 13)));
110-
expected = new ArrayList<>(Arrays.asList(new Interval(2, 7), new Interval(8, 10), new Interval(11, 13)));
111-
CommonUtils.printIntervals(intervals);
112-
actual = solution1.insert(intervals, new Interval(3, 6));
113-
CommonUtils.printIntervals(actual);
114-
assertEquals(expected, actual);
31+
assertEquals(new int[][]{
32+
{1, 2},
33+
{3, 10},
34+
{12, 16}
35+
}, solution1.insert(new int[][]{
36+
{1, 2},
37+
{3, 5},
38+
{6, 7},
39+
{8, 10},
40+
{12, 16}
41+
}, new int[]{4, 9}));
11542
}
11643
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy