牛客题霸 NC30 数组中未出现的最小正整数
Posted Starzkg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客题霸 NC30 数组中未出现的最小正整数相关的知识,希望对你有一定的参考价值。
解决方案
Go
版本一
func minNumberdisappered(arr []int) int {
// write code here
n := len(arr)
for i := 0; i < n; i++ {
for arr[i] > 0 && arr[i] <= n && arr[arr[i]-1] != arr[i] {
arr[arr[i]-1], arr[i] = arr[i], arr[arr[i]-1]
}
}
for i := 0; i < n; i++ {
if arr[i] != i+1 {
return i + 1
}
}
return n + 1
}
版本二
func minNumberdisappered_2(arr []int) int {
n := len(arr)
for i := 0; i < n; i++ {
if arr[i] <= 0 {
arr[i] = n + 1
}
}
for i := 0; i < n; i++ {
num := abs(arr[i])
if num <= n {
arr[num-1] = -abs(arr[num-1])
}
}
for i := 0; i < n; i++ {
if arr[i] > 0 {
return i + 1
}
}
return n + 1
}
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
参考文章
以上是关于牛客题霸 NC30 数组中未出现的最小正整数的主要内容,如果未能解决你的问题,请参考以下文章