题目
代码
// 取反:代表已经遍历该元素-1的位置一次
// 栗:nums = [4,3,2,7,8,2,3,1]
// 先取4,那么去看nums[4-1],即nums[3]是否为负数,
// 如果是代表元素4出现了两次;如果不是,代表还只出现一次,则把nums[3]取反,代表已经遍历过
var findDuplicates = function(nums) {
let res = []
for (let i = 0; i < nums.length; i++) {
const x = Math.abs(nums[i])
if (nums[x - 1] < 0) {
// 为负数,说明已经有一个i了
res.push(x)
} else {
nums[x- 1] = -nums[x - 1]
}
}
return res
};