Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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)