Thinking process

how to write the code very neat?

  • instead of using new variables, updating given input, such as lower
  • don't need to know the index of array, so using shorter for

Mistakes

Corner cases

  • [0, Integer.MAX_VALUE]
  • [Integer.MIN_VALUE, Integer.MAX_VALUE]
  • [Integer.MINVALUE, 0, Integer.MAX_VALUE, Integer.MAX_VALUE]
public class Solution {
    public List<String> findMissingRanges(int[] nums, int lower, int upper) {
        List<String> result = new ArrayList<>();

        for (int num : nums) {
            if (num == Integer.MIN_VALUE) {
                lower = num + 1;
                continue;
            }
            int justBelow = num - 1;
            if (lower == justBelow) {
                result.add(String.valueOf(lower));
            } else if (lower < justBelow) {
                result.add(lower + "->" + justBelow);
            }
            if (num < Integer.MAX_VALUE) {
                lower = num + 1;
            } else {
                lower = Integer.MAX_VALUE;
            }
        }

        if (lower == upper && lower != Integer.MAX_VALUE) {
            result.add(String.valueOf(lower));
        } else if (lower < upper) {
            result.add(lower + "->" + upper);
        }

        return result;
    }
}

results matching ""

    No results matching ""