missing ranges

Leetcode链接/Missing Ranges

Problem: Missing Ranges

Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.

For example, given [0, 1, 3, 50, 75], lower = 0and upper = 99, return ["2", "4->49", "51->74", "76->99"].

分析:

好不容易遇到一个简单的题目,真是不容易。直接上代码了,小心一点就不会出错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class  {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> ret = new ArrayList<>();
if (upper < lower || nums == null) return ret;
int length = nums.length;
if (length == 0) {
String temp = lower == upper?""+lower : lower + "->" + upper;
ret.add(temp);
return ret;
}
int i;
for (i = 0; i < length; i++) {
int cur = nums[i];
if (i == 0 && lower < cur) {
if (cur - lower == 1) {
ret.add(String.valueOf(lower));
} else {
ret.add(lower + "->" + (cur - 1));
}
} else if (i >= 1 && cur - nums[i-1] != 1) {
int prev = nums[i-1];
if (cur - prev == 2) {
ret.add(String.valueOf(prev + 1));
} else {
ret.add((prev + 1) + "->" + (cur - 1));
}
}
}

if (nums[nums.length - 1] < upper) {
if (upper - nums[nums.length - 1] == 1) {
ret.add(String.valueOf(upper));
} else {
ret.add((nums[nums.length - 1] + 1) + "->" + upper);
}
}
return ret;
}
}