u
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package top100liked
|
||||
|
||||
import "testing"
|
||||
|
||||
// https://leetcode.cn/problems/first-missing-positive/description/?envType=study-plan-v2&envId=top-100-liked
|
||||
|
||||
func firstMissingPositive(nums []int) int {
|
||||
n := len(nums)
|
||||
for i := range nums {
|
||||
for nums[i] >= 1 && nums[i] <= n && nums[i] != i+1 {
|
||||
if nums[i] != nums[nums[i]-1] { // 关键条件,否则会死循环 [1, 1]
|
||||
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
for i, v := range nums {
|
||||
if v != i+1 {
|
||||
return i + 1
|
||||
}
|
||||
}
|
||||
return n + 1
|
||||
}
|
||||
|
||||
func TestS17(t *testing.T) {
|
||||
// println(firstMissingPositive([]int{1, 2, 0}))
|
||||
// println(firstMissingPositive([]int{3, 4, -1, 1}))
|
||||
// println(firstMissingPositive([]int{7, 8, 9, 11, 12}))
|
||||
println(firstMissingPositive([]int{1, 1}))
|
||||
}
|
||||
Reference in New Issue
Block a user