163. Missing Ranges

https://leetcode.com/problems/missing-ranges/

LeetCode Solution

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
/*
* The top-submitted solution (beats 100%) is much easier to understand and implement in 3 simple steps.
*
* Find the range between lower and first element in the array.
* Find ranges between adjacent elements in the array.
* Find the range between upper and last element in the array.
*/
class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> res=new LinkedList<>();
if(nums==null||nums.length==0) {
res.add(formRange(lower,upper));
return res;
}

if(lower<nums[0]) res.add(formRange(lower,nums[0]-1));

for(int i=0;i<nums.length-1;i++){
if(nums[i]<nums[i+1]&&nums[i]+1<nums[i+1])
res.add(formRange(nums[i]+1,nums[i+1]-1));
}

if(upper>nums[nums.length-1]) res.add(formRange(nums[nums.length-1]+1,upper));

return res;
}
public String formRange(int l,int r){
return l==r?String.valueOf(l):(l+"->"+r);
}
}

0%