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.
