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 }