Go Missing Integer
func missingInteger(a []int) int {
seen := make(map[int]bool, len(a))
for _, v := range a {
seen[v] = true
}
unique := make([]int, 0, len(seen))
for v := range seen {
unique = append(unique, v)
}
sort.Ints(unique)
min := 1
for _, v := range unique {
if v > 0 {
if min != v {
break
}
min++
}
}
return min
}
This records the positive numbers that exist, then returns the smallest positive value that is still missing.