-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy path_163.java
31 lines (29 loc) · 989 Bytes
/
_163.java
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
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* LeetCode 163 - Missing Ranges
* <p>
* Be careful to integer overflow
*/
public class _163 {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
class Helper {
public String rangeToString(long l, long r) {
if (l == r) return "" + l;
else return l + "->" + r;
}
}
Helper helper = new Helper();
List<String> list = new ArrayList<>();
if (nums == null || nums.length <= 0) list.add(helper.rangeToString(lower, upper));
else {
Arrays.sort(nums);
long pre = lower - 1L;
for (int i = 0; i < nums.length; pre = nums[i], i++)
if (nums[i] - pre >= 2) list.add(helper.rangeToString(pre + 1L, nums[i] - 1L));
if (pre + 1L <= upper) list.add(helper.rangeToString(pre + 1L, upper));
}
return list;
}
}