列表

详情


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
输出: []
解释: 没有缺失的区间,因为没有缺失的数字。

 

提示:

相似题目

汇总区间

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<vector<int>> findMissingRanges(vector<int>& nums, int lower, int upper) { } };

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;

    }
}

上一题