Missing Ranges

163. Missing Ranges

Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], 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"].

class Solution {
    public List<String> findMissingRanges(int[] nums, int lower, int upper) {
        List<String> result = new ArrayList<>();
        long prev = (long)lower - 1;
        
        for (int i = 0; i <= nums.length; i++) {
            long current = i == nums.length ? (long)upper + 1 : (long)nums[i];
            
            if (current - prev == 2) {
                result.add(String.valueOf(prev + 1));
            } else if (current - prev > 2) {
                result.add(String.valueOf(prev + 1) + "->" + String.valueOf(current - 1));
            }
            
            prev = current;
        }
        
        return result;
    }
}

Hope this helps,
Michael

DigitalOcean Referral Badge