| 1234567891011121314151617181920212223242526 | 
							- package main
 
- func firstMissingPositive(nums []int) int {
 
- 	n := len(nums) // n nums can only fill 1~n, then n+1 is the answer
 
- 	// If not, place each number in its right place, the 1st wrong place is the answer
 
- 	for i := range nums {
 
- 		for 0 < nums[i] && nums[i] <= n && nums[nums[i]-1] != nums[i] { // Keep swapping untill correct!
 
- 			nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
 
- 		}
 
- 	}
 
- 	for i := range nums {
 
- 		if nums[i] != i+1 {
 
- 			return i + 1
 
- 		}
 
- 	}
 
- 	return n + 1
 
- }
 
- // func main() {
 
- // 	n := []int{7, 8, 9, 11, 12}
 
- // 	println(firstMissingPositive(n))
 
- // 	n = []int{3, 4, -1, 1}
 
- // 	println(firstMissingPositive(n))
 
- // 	n = []int{1, 2, 3}
 
- // 	println(firstMissingPositive(n))
 
- // }
 
 
  |