题解 | #缺失的第一个正整数#

缺失的第一个正整数

https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5

package main

import (
    "math"
)
/*
1.使用 map 标记所有数组中出现的数字
2.使用 maxNum 记录这些数字的最大值,这个是我们正整数遍历的上界
3.我们将 1-> maxNum 依次在 map 中判断是否缺失,如果缺失直接返回
4.如果 1->maxNum 都存在,那么第一个缺失的数字就是 maxNum+1
*/
func minNumberDisappeared( nums []int ) int {
    m, maxNum := make(map[int]bool, len(nums)), math.MinInt
    for _, v := range nums {
        m[v] = true
        maxNum = max(maxNum, v)
    }
    // if [1,maxNum] hit
    for i := 1; i <= maxNum; i++ {
        if _, ok := m[i]; !ok {
            return i
        }
    }
    // [1,maxNum] missing
    return maxNum+1
}

func max(a, b int) int { if a < b { return b }; return a }

全部评论

相关推荐

找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
03-25 16:22
南华大学 Java
不敢追175女神:你是打了上千个招呼吧?😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务