要求:n数组,数范围1-n,丢失的数可能多个
思路:num范围1-n,可以映射到0-n-1,这个是下标,把对应下标i的数加n,则数大于等于n+1表示其下标曾经出现过,下标加1映射回num
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
int n=nums.size();
vector<int> res;
for(auto &num:nums){
int x=(num-1)%n;
nums[x]+=n;
}
for(int i=0;i<n;++i){
if(nums[i]<=n)
res.push_back(i+1);
}
return res;
}
};