天天看點

LeetCode_448. Find All Numbers Disappeared in an Array

題目描述:

LeetCode_448. Find All Numbers Disappeared in an Array
class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        int i=1;
        int n=nums.size();
        sort(nums.begin(),nums.end());
        int j=0;
        while(j<n){
            if(i==nums[j]){
                i++;
                j++;
            }else if(i<nums[j]){
                res.push_back(i);
                i++;
            }else{
                j++;
            }
        }
        while(i<=n){
            res.push_back(i);
            i++;
        }
        return res;
    }
private:
    vector<int> res;
};      
class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        vector<int> res;
        for(int i=0;i<nums.size();i++){
            int index=abs(nums[i])-1;
            nums[index]=nums[index]>0?-nums[index]:nums[index];
        }
        for(int i=0;i<nums.size();i++)
            if(nums[i]>0)
                res.push_back(i+1);
        return res;
    }
};