不考虑空间的话,就是用一个额外的空间去记录是否出现,可以使用set,set插入的话,是会不重复插入的,也可以用hash表插入,还可以用一个额外的从1-n为0的数组去记录。
下面介绍不使用额外空间的,其实在645题已经用到过了,就是数组嵌套寻找,用数组元素作为序号第二次查找;
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
vector<int> result;
for(int i=0;i<nums.size();i++)
{
if(nums[abs(nums[i])-1]>0)
nums[abs(nums[i])-1]*=-1;
}
for(int i=0;i<nums.size();i++)
{
if(nums[i]>0)
result.push_back(i+1);
}
return result;
}
};