码迷,mamicode.com
首页 > 其他好文 > 详细

a_lc_缺失的第一个整数(暴力 / 不断放到正确位置)

时间:2021-02-01 12:16:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ret   int   osi   i++   search   pos   排序   turn   一个   

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。O(n)+O(1)

排序

func firstMissingPositive(A []int) int {
	n := len(A)
	sort.Ints(A)
	for i := 1; i <= n; i++ {	
	    idx := sort.SearchInts(A, i) //返回理想的插入位置
	    if (idx >= n || A[idx] != i) {
	        return i
	    }
	}
	return n+1
}

O(n)

func firstMissingPositive(A []int) int {
    n := len(A)
    for i := 0; i < n; i++ {
        for (0<A[i] && A[i]<=n && A[i]!=A[A[i]-1]) { //只要A[i]没在合法位置,我就一直将A[i]交换到A[A[i]-1]上,除非A[i]不合法
            A[A[i]-1], A[i] = A[i], A[A[i]-1]
        }
    }
    for i := 0; i < n; i++ {
        if (i+1 != A[i]) {
            return i+1
        }
    }
    return n+1
}

a_lc_缺失的第一个整数(暴力 / 不断放到正确位置)

标签:ret   int   osi   i++   search   pos   排序   turn   一个   

原文地址:https://www.cnblogs.com/wdt1/p/14350377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!