题目描述:
给定一个整数数组,其中所有值的范围在[1.n]之间,n是数组的长度
数组中有些元素出现2次,有些元素只出现1次
找到该范围内,没有出现在数组nums中的所有数组
要求时间复杂度O(n),空间复杂度O(1)
题目解析:
关于“+n”的方法,与这篇文章一样:数组中重复的数据
std::vector<int>* fun(int *arr,int len)
{
auto p = new std::vector<int>;
for(int i = 0;i < len; ++i)
{
int index = (arr[i] - 1) % len;
arr[index] += len;
}
for(int j = 0; j < len; ++j)
{
if(arr[j] <= len)
{
p->push_back(j+1);
}
}
return p;
}