力扣-四十一:缺失一个正数

题目:缺失一个正数

题目描述:

​ 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

示例 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 协议 ,转载请注明出处!