2021-10-19:缺失的区间。给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。力扣163。

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-10-19:缺失的区间。给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。力扣163。相关的知识,希望对你有一定的参考价值。

2021-10-19:缺失的区间。给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。力扣163。

福大大 答案2021-10-19:

一次遍历。遍历的时候,修改左边界。
时间复杂度:O(N)。
空间复杂度:O(1)。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
    nums := []int{1, 2, 3, 4, 6, 8, 10}
    lower := 2
    upper := 10
    ret := findMissingRanges(nums, lower, upper)
    fmt.Println(ret)
}

func findMissingRanges(nums []int, lower int, upper int) []string {
    ans := make([]string, 0)
    for _, num := range nums {
        if num > lower {
            ans = append(ans, miss(lower, num-1))
        }
        if num == upper {
            return ans
        }
        lower = num + 1
    }
    if lower <= upper {
        ans = append(ans, miss(lower, upper))
    }
    return ans
}

// 生成"lower->upper"的字符串,如果lower==upper,只用生成"lower"
func miss(lower, upper int) string {
    left := fmt.Sprintf("%d", lower)
    right := ""
    if upper > lower {
        right = "->" + fmt.Sprintf("%d", upper)
    }
    return left + right
}

执行结果如下:


左神java代码

以上是关于2021-10-19:缺失的区间。给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。力扣163。的主要内容,如果未能解决你的问题,请参考以下文章

详解桶排序以及排序内容大总结

DevOps让金融业数字化转型更敏捷 | 分享实录

MissingNumber缺失的数字,FirstMissingPositive第一个缺失的正数

2021-08-11:按要求补齐数组。给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用

排序区间查询

Leetcode 41 缺失的第一个整数