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

缺失的第一个正整数

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]
}


全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务