寻找数组中的重复数字
数组中重复的数字
http://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8
- 长度为n,范围为0~n-1,若无重复数字,且按序排列,则必有value=index;若存在重复数字时,当一个数字占据index,则重复元素必然会产生冲突
- 遍历数组
- 如果vlaue!=index 说明value没有在正确的位置上,应将其交换到正确的位置上
- 如果value == arr[value], 说明该位置上已存在value,该元素为重复元素,结束返回true
while (index < n) { if (arr[index] != index && arr[index] == arr[arr[index]]) return true; else { /* 当arr[index] == index时不需要交换 */ swap(arr[index], arr[arr[index]]); } ++index; } return false;