首页 > 其他 > 详细

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

时间:2021-01-30 21:19:07      阅读:30      评论:0      收藏:0      [点我收藏+]

给你一个未排序的整数数组 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_缺失的第一个整数(暴力 / 不断放到正确位置)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!