首页 > 其他分享 >Acwing73

Acwing73

时间:2023-01-30 21:34:16浏览次数:34  
标签:nums auto sum Acwing73 vector res 复杂度

哈希表

时空复杂度 O(n)

class Solution {
public:
    vector<int> findNumsAppearOnce(vector<int>& nums) {
        unordered_map<int,int> m;
        vector<int> res;
        for(auto x : nums) m[x]++;
        for(auto x : nums){
            if(m[x] == 1)
                res.push_back(x);
        }
        return res;
    }
};

令所有元素的相异或得sum,sum = a ^ b.找出a,b不同的位,再根据找到的不同的位分成两组分别异或,可得出答案。

时间复杂度O(n),空间复杂度O(1).

class Solution {
public:
    vector<int> findNumsAppearOnce(vector<int>& nums) {
        int sum = 0, k = 0, l = 0;
        for(auto x : nums) sum ^= x;
        while(!((sum>>k) & 1)) k++;
        for(auto x : nums){
            if(x >> k & 1)
                l ^= x;
        }
        return vector<int>{l,l^sum};
    }
};

标签:nums,auto,sum,Acwing73,vector,res,复杂度
From: https://www.cnblogs.com/poteitoutou/p/17077219.html

相关文章