Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit cb5cd84

Browse files
refactor 163
1 parent 2231165 commit cb5cd84

File tree

2 files changed

+83
-100
lines changed

2 files changed

+83
-100
lines changed

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

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,30 @@
55

66
/**
77
* 163. Missing Ranges
8+
*
89
* Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], return its missing ranges.
910
* For example, given [0, 1, 3, 50, 75], lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].
1011
*/
1112
public class _163 {
12-
13-
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
14-
List<String> result = new ArrayList<>();
15-
long low = (long) lower - 1;
16-
long up = 0;
17-
for (int i = 0; i <= nums.length; i++) {
18-
if (i == nums.length) {
19-
up = (long) upper + 1;
20-
} else {
21-
up = nums[i];
22-
}
23-
if (up == low + 2) {
24-
result.add(low + 1 + "");
25-
} else if (up > low + 2) {
26-
result.add((low + 1) + "->" + (up - 1));
13+
public static class Solution1 {
14+
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
15+
List<String> result = new ArrayList<>();
16+
long low = (long) lower - 1;
17+
long up = 0;
18+
for (int i = 0; i <= nums.length; i++) {
19+
if (i == nums.length) {
20+
up = (long) upper + 1;
21+
} else {
22+
up = nums[i];
23+
}
24+
if (up == low + 2) {
25+
result.add(low + 1 + "");
26+
} else if (up > low + 2) {
27+
result.add((low + 1) + "->" + (up - 1));
28+
}
29+
low = up;
2730
}
28-
low = up;
31+
return result;
2932
}
30-
return result;
3133
}
3234
}

src/test/java/com/fishercoder/_163Test.java

Lines changed: 64 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -10,97 +10,78 @@
1010

1111
import static junit.framework.Assert.assertEquals;
1212

13-
/**
14-
* Created by fishercoder on 12/31/16.
15-
*/
1613
public class _163Test {
1714

18-
private static _163 test;
19-
private static List<String> expected;
20-
private static List<String> actual;
21-
private static int lower;
22-
private static int upper;
23-
private static int[] nums;
15+
private static _163.Solution1 solution1;
16+
private static List<String> expected;
17+
private static List<String> actual;
18+
private static int[] nums;
2419

25-
@BeforeClass
26-
public static void setup() {
27-
test = new _163();
28-
expected = new ArrayList();
29-
actual = new ArrayList();
30-
}
20+
@BeforeClass
21+
public static void setup() {
22+
solution1 = new _163.Solution1();
23+
expected = new ArrayList();
24+
actual = new ArrayList();
25+
}
3126

32-
@Before
33-
public void setupForEachTest() {
34-
expected.clear();
35-
actual.clear();
36-
}
27+
@Before
28+
public void setupForEachTest() {
29+
expected.clear();
30+
actual.clear();
31+
}
3732

38-
@Test
39-
public void test1() {
33+
@Test
34+
public void test1() {
35+
//solution1 case 1: should return ["0->2147483646"]
36+
nums = new int[] {2147483647};
37+
expected.add("0->2147483646");
38+
actual = solution1.findMissingRanges(nums, 0, 2147483647);
39+
assertEquals(expected, actual);
40+
}
4041

41-
//test case 1: should return ["0->2147483646"]
42-
lower = 0;
43-
upper = 2147483647;
44-
nums = new int[]{2147483647};
45-
expected.add("0->2147483646");
46-
actual = test.findMissingRanges(nums, lower, upper);
47-
assertEquals(expected, actual);
42+
@Test
43+
public void test2() {
44+
//solution1 case 2: should return ["-2147483647->-1","1->2147483646"]
45+
nums = new int[] {-2147483648, -2147483648, 0, 2147483647, 2147483647};
46+
expected.add("-2147483647->-1");
47+
expected.add("1->2147483646");
48+
actual = solution1.findMissingRanges(nums, -2147483648, 2147483647);
49+
assertEquals(expected, actual);
50+
}
4851

49-
}
52+
@Test
53+
public void test3() {
54+
//solution1 case 3: should return ["-2147483648->2147483647"]
55+
nums = new int[] {};
56+
expected.add("-2147483648->2147483647");
57+
actual = solution1.findMissingRanges(nums, -2147483648, 2147483647);
58+
assertEquals(expected, actual);
59+
}
5060

51-
@Test
52-
public void test2() {
53-
//test case 2: should return ["-2147483647->-1","1->2147483646"]
54-
lower = -2147483648;
55-
upper = 2147483647;
56-
nums = new int[]{-2147483648, -2147483648, 0, 2147483647, 2147483647};
57-
expected.add("-2147483647->-1");
58-
expected.add("1->2147483646");
59-
actual = test.findMissingRanges(nums, lower, upper);
60-
assertEquals(expected, actual);
61-
}
61+
@Test
62+
public void test4() {
63+
//solution1 case 4: should return ["-2147483648->2147483646"]
64+
nums = new int[] {2147483647};
65+
expected.add("-2147483648->2147483646");
66+
actual = solution1.findMissingRanges(nums, -2147483648, 2147483647);
67+
assertEquals(expected, actual);
68+
}
6269

63-
@Test
64-
public void test3() {
65-
//test case 3: should return ["-2147483648->2147483647"]
66-
lower = -2147483648;
67-
upper = 2147483647;
68-
nums = new int[]{};
69-
expected.add("-2147483648->2147483647");
70-
actual = test.findMissingRanges(nums, lower, upper);
71-
assertEquals(expected, actual);
72-
}
70+
@Test
71+
public void test5() {
72+
//solution1 case 5: should return ["0->2147483647"]
73+
nums = new int[] {};
74+
expected.add("0->2147483647");
75+
actual = solution1.findMissingRanges(nums, 0, 2147483647);
76+
assertEquals(expected, actual);
77+
}
7378

74-
@Test
75-
public void test4() {
76-
//test case 4: should return ["-2147483648->2147483646"]
77-
lower = -2147483648;
78-
upper = 2147483647;
79-
nums = new int[]{2147483647};
80-
expected.add("-2147483648->2147483646");
81-
actual = test.findMissingRanges(nums, lower, upper);
82-
assertEquals(expected, actual);
83-
}
84-
85-
@Test
86-
public void test5() {
87-
//test case 5: should return ["0->2147483647"]
88-
lower = 0;
89-
upper = 2147483647;
90-
nums = new int[]{};
91-
expected.add("0->2147483647");
92-
actual = test.findMissingRanges(nums, lower, upper);
93-
assertEquals(expected, actual);
94-
}
95-
96-
@Test
97-
public void test6() {
98-
//test case 6: should return ["-2147483647->2147483647"]
99-
lower = -2147483648;
100-
upper = 2147483647;
101-
nums = new int[]{-2147483648};
102-
expected.add("-2147483647->2147483647");
103-
actual = test.findMissingRanges(nums, lower, upper);
104-
assertEquals(expected, actual);
105-
}
79+
@Test
80+
public void test6() {
81+
//solution1 case 6: should return ["-2147483647->2147483647"]
82+
nums = new int[] {-2147483648};
83+
expected.add("-2147483647->2147483647");
84+
actual = solution1.findMissingRanges(nums, -2147483648, 2147483647);
85+
assertEquals(expected, actual);
86+
}
10687
}

0 commit comments

Comments
 (0)