LeetCode题解:剑指 Offer 03. 数组中重复的数字,原地置换,JavaScript,详细注释
Opened this issue · 0 comments
chencl1986 commented
原题链接:
https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/
解题思路:
- 遍历
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
};