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)
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