题解 | #缺失的第一个正整数#
缺失的第一个正整数
http://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
package main
import "sort"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
func minNumberDisappeared(nums []int) int {
// write code here
var MapForMinNumberDisappeared map[int]bool
var res []int
MapForMinNumberDisappeared = make(map[int]bool)
//输入切片排序
sort.Ints(nums)
//如果最小值都大于1,直接输出
if nums[0] > 1 {
return 1
}
start := nums[0]
end := nums[len(nums)-1]
//map中的每个k是num中的值,value是bool,直接从排完序的nums中最小值到最大值的连续整数入map
for i := start; i <= end; i++ {
MapForMinNumberDisappeared[i] = false
}
//已经有的值赋为true
for i := 0; i < len(nums); i++ {
MapForMinNumberDisappeared[nums[i]] = true
}
//正整数且未出现
for i, b := range MapForMinNumberDisappeared {
if i>0 && !b {
res = append(res, i)
}
}
//不管怎样,加入最大值的后一个正整数。如果给定的是从1开始连续,就输出这个
res = append(res, nums[len(nums)-1]+1)
sort.Ints(res)
return res[0]
}