First code:
package main
import (
"fmt"
)
func main() {
test := []int{2, 1, 1}
fmt.Println(findDuplicate(test))
}
func findDuplicate(nums []int) int {
for i := 0; i < len(nums); i++ {
if nums[i] != i+1 {
if nums[i] == nums[nums[i]-1] {
return nums[i]
}
//tmp := nums[i]
//nums[i] = nums[nums[i]-1]
//nums[nums[i]-1] = tmp
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
}
}
return 0
}
These code will print 1.
Second code:
package main
import (
"fmt"
)
func main() {
test := []int{2, 1, 1}
fmt.Println(findDuplicate(test))
}
func findDuplicate(nums []int) int {
for i := 0; i < len(nums); i++ {
if nums[i] != i+1 {
if nums[i] == nums[nums[i]-1] {
return nums[i]
}
tmp := nums[i]
nums[i] = nums[nums[i]-1]
nums[nums[i]-1] = tmp
//nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
}
}
return 0
}
These code will print 0.
Is it a bug or something? I'm quite confused. Thanks!
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.