041.缺失的第一个正数 First Missing Positive

Description Hard

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

说明:

Example
输入: [1,2,0]
输出: 3

输入: [3,4,-1,1]
输出: 2

输入: [7,8,9,11,12]
输出: 1
Solution
func firstMissingPositive(nums []int) int {
    if len(nums) == 0 {
        return 1
    }
    lenth := len(nums)
    for i := 0;i < lenth; {
        v := nums[i]
        if v > 0 && v < lenth && v != nums[v-1] {
            nums[i],nums[v-1]=  nums[v-1],nums[i]
        }else {
            i ++
        }
    }
    for i := 0 ; i < len(nums);i ++ {
        if nums[i] != i +1 {
            return i+1
        }
    }
    return len(nums)+1
}

leetCode地址