本题源自leetcode 442
--------------------------------------------------------------
思路: 因为数组中的数 从 1-N,所以可以吧数放i到i-1的位置上。然后遍历数组,如果num[i] != i+1则就是重复的
代码:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> res;
for(int i = 0; i < nums.size();){
if(nums[i] != nums[nums[i] - 1])
swap(nums[i],nums[nums[i]-1]);
else
i++;
}
for(int i = 0; i < nums.size(); i++){
if(nums[i] != i+1)
res.push_back(nums[i]);
}
return res;
}