[LeetCode]442. Find All Duplicates in an Array
题目描述
思路
出现数字的范围和数组长度一致,并且只重复出现两次,可以用位置标记,当这个位置被访问一次的时候,将位子上的数字置负,再次访问的时候,就将该表示该位置的数存入结果数组。
代码
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> res;
for (int i = 0; i < nums.size(); ++i){
int flag = abs(nums[i]) - 1;
if (nums[flag] > 0){
nums[flag] = -nums[flag];
}
else {
res.push_back(flag + 1);
}
}
return res;
}
};