标签: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
}
标签:ret int osi i++ search pos 排序 turn 一个
原文地址:https://www.cnblogs.com/wdt1/p/14350377.html