class Solution {
public:
vector<vector<int>> findMissingRanges(vector<int>& nums, int lower, int upper) {
}
};
163. 缺失的区间
给你一个闭区间 [lower, upper]
和一个 按从小到大排序 的整数数组 nums
,其中元素的范围在闭区间 [lower, upper]
当中。
如果一个数字 x
在 [lower, upper]
区间内,并且 x
不在 nums
中,则认为 x
缺失。
返回 准确涵盖所有缺失数字 的 最小排序 区间列表。也就是说,nums
的任何元素都不在任何区间内,并且每个缺失的数字都在其中一个区间内。
示例 1:
输入: nums = [0, 1, 3, 50, 75]
, lower = 0 , upper = 99
输出: [[2,2],[4,49],[51,74],[76,99]]
解释:返回的区间是:
[2,2]
[4,49]
[51,74]
[76,99]
示例 2:
输入: nums = [-1], lower = -1, upper = -1 输出: [] 解释: 没有缺失的区间,因为没有缺失的数字。
提示:
-109 <= lower <= upper <= 109
0 <= nums.length <= 100
lower <= nums[i] <= upper
nums
中的所有值 互不相同相似题目
原站题解
python3 解法, 执行用时: 44 ms, 内存消耗: 15.9 MB, 提交时间: 2023-10-15 19:41:54
class Solution: def findMissingRanges(self, nums: List[int], lower: int, upper: int) -> List[str]: ans = [] if len(nums) == 0: return [[lower, upper]] if nums[0] > lower: nums = [lower - 1] + nums if nums[-1] < upper: nums = nums + [upper + 1] n = len(nums) for i in range(1, n): if nums[i] != nums[i - 1] + 1: ans.append([nums[i - 1] + 1, nums[i] - 1]) return ans
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-10-15 19:41:14
func findMissingRanges(nums []int, lower int, upper int) [][]int { if len(nums) == 0 { return [][]int{{lower,upper}} } res := [][]int{} for i := 0;i<len(nums);i++ { if nums[i] > lower { if i == 0 { res = append(res, []int{lower,nums[i]-1}) }else { res = append(res, []int{nums[i-1]+1,nums[i]-1}) } } lower = nums[i]+1 } if nums[len(nums)-1] < upper { res = append(res, []int{lower,upper}) } return res }
java 解法, 执行用时: 0 ms, 内存消耗: 39.7 MB, 提交时间: 2023-10-15 19:40:54
class Solution { public List<List<Integer>> findMissingRanges(int[] nums, int lower, int upper) { List<List<Integer>> res = new ArrayList<>(); for(int num : nums){ if(num > lower){ res.add(Arrays.asList(lower,num -1)); } lower = num + 1; } if(lower <=upper){ res.add(Arrays.asList(lower,upper)); } return res; } }