LeetCode Problem
163. Missing Ranges 🔒
Link to LeetCode 🔒[locked - premium question]
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, upper], return its missing ranges.
Example:
Input: nums = [0, 1, 3, 50, 75], lower = 0 and upper = 99,
Output: ["2", "4->49", "51->74", "76->99"]
public List findMissingRanges(int[] nums, int lower, int upper) {
List result = new ArrayList< >();
int start = lower;
if(lower==Integer.MAX_VALUE){
return result;
}
for(int i=0; i< nums.length; i++){
// handle duplicates, e.g., [1,1,1] lower=1 upper=1
if(i< nums.length-1 && nums[i]==nums[i+1]){
continue;
}
if(nums[i] == start){
start++;
}else{
result.add(getRange(start, nums[i]-1));
if(nums[i]==Integer.MAX_VALUE){
return result;
}
start = nums[i]+1;
}
}
if(start<=upper){
result.add(getRange(start, upper));
}
return result;
}
private String getRange(int n1, int n2) {
return n1 == n2 ? String.valueOf(n1) : String.format("%d->%d" , n1, n2);
}