数组中重复的数字
题目:
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1
思路:
func duplicate(numbers []int) int { length := len(numbers) if length <= 0 { return -1 } for i := 0;i < length; i++ { //必须首先判断 numbers[i] != i,不然考虑已经排好序的情况,0,1,2,3,4,i= 1,numbers[1] = 1; //肯定numbers[numbers[i]] == numbers[i], for numbers[i] != i {//可能2,1,1这种没有0的情况,那么就会 if numbers[numbers[i]] == numbers[i] { return numbers[i] } numbers[i], numbers[numbers[i]] = numbers[numbers[i]], numbers[i] } } return -1 }
原文:https://www.cnblogs.com/dingxiaoqiang/p/14642083.html