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;
}
}