https://leetcode.com/problems/missing-ranges/
LeetCode Solution1
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);
    }
}