I test it on golang play.
https://play.golang.org/p/trTGZsW6Ai
https://play.golang.org/p/NEAavwidJ1
在 2017年3月23日星期四 UTC+8下午1:04:00,Cholerae Hu写道:
>
> 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.

Reply via email to