Skip to content

Commit f0fcf85

Browse files
authored
Create MissingRanges.java
1 parent 3ae6fd7 commit f0fcf85

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

MissingRanges.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
/**
5+
* Given a sorted integer array where the range of elements are [0, 99] inclusive, return its
6+
* missing ranges.
7+
* For example, given [0, 1, 3, 50, 75], return [“2”, “4->49”, “51->74”, “76->99”]
8+
*/
9+
10+
public class MissingRanges {
11+
public static void main(String[] args) {
12+
int[] array = new int[5];
13+
14+
array[0] = 0;
15+
array[1] = 1;
16+
array[2] = 3;
17+
array[3] = 50;
18+
array[4] = 75;
19+
20+
int min = 1;
21+
int max = 99;
22+
23+
getMissingRanges(array, min, max).forEach(range -> {
24+
System.out.println("Range : " + range);
25+
});
26+
}
27+
28+
private static List<String> getMissingRanges(int[] array, int min, int max) {
29+
List<String> ranges = new ArrayList<>();
30+
31+
if(array[0] > min) ranges.add(getRange(min, array[0]));
32+
33+
for(int i=0; i<array.length; i++){
34+
int current = array[i];
35+
int prev = (i==0) ? -1 : array[i - 1];
36+
if(prev == -1) continue;
37+
if(current - prev > 1) ranges.add(getRange(prev+1, current-1));
38+
}
39+
40+
if(array[array.length - 1] < max) ranges.add(getRange(array[array.length - 1], max));
41+
42+
return ranges;
43+
}
44+
45+
private static String getRange(int start, int end) {
46+
if(end - start == 0){
47+
return String.valueOf(start);
48+
}
49+
else{
50+
return String.valueOf(start) + " -> " + String.valueOf(end);
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)