163. 缺失的区间
给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。
示例:
输入: nums = [0, 1, 3, 50, 75], lower = 0 和 upper = 99,
输出: ["2", "4->49", "51->74", "76->99"]
解法:模拟
思想
没什么好说,按照题意就行
复杂度
时间复杂度: O ( N ) O(N) O(N)
空间复杂度: O ( 1 ) O(1) O(1)
代码
class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
int n = nums.length;
List<String> res = new ArrayList<>();
if (n == 0) {
res.add(help(lower - 1, upper + 1));
return res;
}
if (lower < nums[0]) res.add(help(lower - 1, nums[0]));
for (int i = 1; i < n; i++) {
if (nums[i] != nums[i - 1] + 1) {
res.add(help(nums[i - 1], nums[i]));
}
}
if (upper > nums[n - 1]) res.add(help(nums[n - 1], upper + 1));
return res;
}
String help(int l, int r) {
StringBuilder sb = new StringBuilder();
sb.append(l + 1);
if (r - l != 2) {
sb.append('-').append('>').append(r - 1);
}
return sb.toString();
}
}