力扣-四十一:缺失一个正数
题目:缺失一个正数
题目描述:
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
提示:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。
思路:
用map做,先把数放进map里面map_num[v]=v,再用哈希的思想,判断这个下标和值相不相同。
代码:
func firstMissingPositive(nums []int) int {
map_num:=make(map[int]int,len(nums))
for _,v :=range nums{
map_num[v]=v
}
//用map来判断这个值在不在确实很方便
for i:=1;i<=len(nums);i++{
if _,ok:=map_num[i];!ok{
return i
}
}
//如果数字全部有序,就输出个数加一
return len(nums)+1
}
代码效率:
执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:2.4 MB, 在所有 Go 提交中击败了9.44%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!