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