AcWing 13. 找出数组中重复的数字
原题链接
简单
作者:
buchiyu
,
2021-05-11 10:26:12
,
所有人可见
,
阅读 187
1、Map
var duplicateInArray = function(nums) {
const n = nums.length
const map = new Map()
for (let i = 0; i < n; i++) {
if (nums[i] > n - 1 || nums[i] < 0 ) return -1
}
for (let i = 0; i < n; i++) {
if (map.has(nums[i])) return nums[i]
else map.set(nums[i],true)
}
return -1
};
2、原地置换
var duplicateInArray = function(nums) {
const n = nums.length
const map = new Map()
let temp
for (let i = 0; i < n; i++) {
if (nums[i] > n - 1 || nums[i] < 0 ) return -1
}
for (let i = 0; i < n; i++) {
while (nums[i] !== i) {
if (nums[i] === nums[nums[i]]) return nums[i]
temp = nums[i]
nums[i] = nums[temp]
nums[temp] = temp
// [nums[i],nums[nums[i]]] = [nums[nums[i]],nums[i]]
}
}
return -1
};