public static List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> missingRanges = new ArrayList<>();
long next = lower; // use long to avoid overflow issues
for (int num : nums) {
if (num > next) {
missingRanges.add(formatRange(next, num - 1));
}
next = (long) num + 1; // move to next expected number
}
if (next <= upper) {
missingRanges.add(formatRange(next, upper));
}
return missingRanges;
}
private static String formatRange(long start, long end) {
return start == end ? String.valueOf(start) : start + "->" + end;
}
Comments
0 B
|0 👍
/0 👎
0 B
|👍
/👎