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