解析:
这类问题的核心就是找nums[i]和nums[nums[i]-1]的关系.
在序列中找出重复的数字.关键是–每个元素1<=a[i]<=n,有些元素出现两次有些出现一次.和上一题类似,找到每个元素的正确的位置.
solution:
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
int n = nums.size();
vector<int> res;
for(int i = 0;i<n;i++)
{
if(nums[i] != nums[nums[i]-1])
{
swap(nums[i],nums[nums[i]-1]);
--i;
}
}
for(int i=0;i<n;i++)
{
if(nums[i]!=i+1)
res.push_back(nums[i]);
}
return res;
}
};