Skip to content

Commit d9e09e7

Browse files
aQuaaQua
aQua
authored and
aQua
committed
添加了比我快的答案。但是,还没有完全理解。
1 parent b079580 commit d9e09e7

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed
Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
package Problem0041
22

3-
import "sort"
3+
import (
4+
"fmt"
5+
)
46

57
func firstMissingPositive(nums []int) int {
6-
if len(nums) == 0 {
7-
return 1
8-
}
9-
10-
sort.Ints(nums)
11-
i := sort.SearchInts(nums, 0)
12-
if nums[i] == 0 {
13-
i++
14-
}
15-
16-
res := 1
17-
for i < len(nums) {
18-
if 0 < i && nums[i] == nums[i-1] {
19-
i++
8+
for i := 0; i < len(nums); i++ {
9+
index := nums[i] - 1
10+
if nums[i] < 1 || nums[i] > len(nums) || index < 0 || index > len(nums) || nums[i] == i+1 {
11+
// cannot swap or noused
2012
continue
2113
}
22-
if nums[i] != res {
23-
return res
14+
for nums[i] >= 1 && nums[i] <= len(nums) && nums[i] != nums[nums[i]-1] {
15+
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
16+
fmt.Println(nums)
2417
}
25-
i++
26-
res++
2718
}
2819

29-
return res
20+
for i := range nums {
21+
if nums[i] != i+1 {
22+
return i + 1
23+
}
24+
}
25+
return len(nums) + 1
3026
}

0 commit comments

Comments
 (0)