题目描述:在一个长度为n的数组中,值为0到n-1范围内的数字。数组中某些值是重复的,但不知道有几个数字是重复的,也不知道重复多少次。请找出数组中第一个重复的数字。例如,如果长度为7的数组[2,3,1,0,2,5,3],那么对应的输出应为2.
返回值描述:
- 如果数组中有重复的数字,函数返回true,否则返回false;
- 如果数组中有重复的数字,把第一个重复的值放在参数duplication[0]中(duplication已初始化,作为参数传入,可直接赋值)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function duplicate(nums, duplication) { if (nums === null || nums.length <= 0) { return false }
for (let i = 0; i < nums.length; i++) { while (nums[i] !== i) { if (nums[i] === nums[nums[i]]) { duplication[0] = nums[i] return true } swap(nums, i, nums[i]) } } return false }
function swap(arr, i, j) { [arr[i], arr[j]] = [arr[j], arr[i]] }
|