原题链接: leetcode.cn/problems/sh…
解题思路:
- 遍历
nums
,如果发现nums[i]
存储的值不为i
,就把nums[i]
存储到相应位置,即nums[nums[i]]
。 - 如果发现
nums[nums[i]]
已经储存了nums[i]
,表示出现重复,将nums[i]
返回即可。
/**
* @param {number[]} nums
* @return {number}
*/
var findRepeatNumber = function(nums) {
for (let i = 0; i < nums.length; i++) {
// 如果当前位置放的不是该有的值,表示需要将nums[i]放到对应位置上
if (nums[i] !== i) {
// 如果发现该放的位置已经有了对应的值,表示找到重复数字
if (nums[i] === nums[nums[i]]) {
return nums[i]
}
// 将nums[i]放到相应位置
nums[nums[i]] = nums[i]
}
}
// 如果没有重复的数字,返回-1
return -1
};