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 }