[LeetCode] 163. Missing Ranges

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

Thought process:
  1. Get missing range from lower to nums[0].
  2. Get missing ranges in nums.
  3. Get missing range from nums[len - 1] to upper.

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
31
32
33
class Solution {
    public List<String> findMissingRanges(int[] nums, int lower, int upper) {
        List<String> ranges = new ArrayList<>();
        int len = nums.length;
        
        if (len == 0) {
            if (lower <= upper) {
                ranges.add(getRange(lower, upper));
            }
            return ranges;
        }
        
        if (lower < nums[0]) {
            ranges.add(getRange(lower, nums[0] - 1));
        }
        for (int i = 1; i < len; i++) {
            if (nums[i] > nums[i - 1] && nums[i - 1] != nums[i] - 1) {
                ranges.add(getRange(nums[i - 1] + 1, nums[i] - 1));
            }
        }
        if (upper > nums[len - 1]) {
            ranges.add(getRange(nums[len - 1] + 1, upper));
        }
        return ranges;
    }
    
    private String getRange(int lower, int upper) {
        if (lower == upper) {
            return lower + "";
        }
        return lower + "->" + upper;
    }
}

Time complexity: O(n).

Comments

Popular posts from this blog

[LeetCode] 269. Alien Dictionary

[LeetCode] 714. Best Time to Buy and Sell Stock with Transaction Fee

[LeetCode] 631. Design Excel Sum Formula