题目链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/
思路:对于出现的数字将其标注为负数,if(nums[abs(nums[i])-1]>0)nums[abs(nums[i])-1]*=-1
注意:1.因为可能本身该位数字已经为负数,只有加上abs才能找到正确置为负数的下标。
2.本身值为负数代表该位数字已出现过,无需再乘以-1
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
int len=nums.size();
vector<int>result;
for(int i=0;i<len;i++)
{
if(nums[abs(nums[i])-1]>0)
{
nums[abs(nums[i])-1]*=-1;
}
}
for(int i=0;i<len;i++)
{
if(nums[i]>0)
{
result.push_back(i+1);
}
}
return result;
}
};