File tree 1 file changed +16
-20
lines changed
Algorithms/0041.first-missing-positive 1 file changed +16
-20
lines changed Original file line number Diff line number Diff line change 1
1
package Problem0041
2
2
3
- import "sort"
3
+ import (
4
+ "fmt"
5
+ )
4
6
5
7
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
20
12
continue
21
13
}
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 )
24
17
}
25
- i ++
26
- res ++
27
18
}
28
19
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
30
26
}
You can’t perform that action at this time.
0 commit comments