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 = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].
Solutions
public class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> result = new ArrayList<String>();
if(nums == null){
return result;
}
if(lower <= Integer.MIN_VALUE || upper >= Integer.MAX_VALUE || lower > upper){
return result;
}
int cur;
// check for the first interval
int prev = lower - 1;
for(int i = 0; i <= nums.length; i++){
// check for the last interval
cur = i == nums.length? upper + 1 : nums[i];
if(cur - prev > 1){
result.add(range(prev + 1, cur - 1));
}
prev = cur;
}
return result;
}
public String range(int start, int end){
return start == end? String.valueOf(start) : start + "->" + end;
}
}