Find All Numbers Disappeared in an Array
这种题目有点脑筋急转弯的意思。
题目要求:
Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
看到discuss中的一种解法:改变了原容器中的值,
解题思路:存在的值作为index,依据index将所对应的值变为负值,最后进行检测,值为正的索引即为缺失的数字。
代码如下:
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
int len=nums.size();
for(int i=0;i<len;i++)
{
int m=abs(nums[i])-1;
nums[m]=nums[m]>0?-nums[m]:nums[m];
}
vector<int> ret;
for(int i=0;i<len&&nums[i]>0;i++)
ret.push_back(i+1);
return ret;
}
};