【Medium】641. Missing Interval
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], return its missing ranges.
Example:
Given nums = [0, 1, 3, 50, 75], lower = 0 and upper = 99 return ["2", "4->49", "51->74", "76->99"].
解题思路
这题的难点在于corner case的考虑,即Integer.MAX_VALUE不能加1,Integer.MIN_VALUE不能减1。
核心代码
// 从start到第一个元素
if (start > Integer.MIN_VALUE + 1 && lower < start - 1) result.add("" + lower + "->" + (start - 1));
else if (lower < start) result.add("" + lower);
// 所有元素的缝隙
for (int i = 1; i < nums.length; i++){
if (start != Integer.MAX_VALUE && nums[i] != Integer.MIN_VALUE && nums[i] > start + 1) {
if (start + 1 == nums[i] - 1) result.add("" + (start + 1));
else result.add("" + (start + 1) + "->" + (nums[i] - 1));
}
start = nums[i];
}
// 从最后一个元素到end
if (upper >= Integer.MIN_VALUE + 1 && start < upper - 1) result.add("" + (start + 1) + "->" + upper);
else if (upper >= Integer.MIN_VALUE && start < upper) result.add("" + (upper));
时间空间复杂度
O(n) + S(1)
Last updated