//只有2个数出现1次,其余的数都出现2次
class Solution {
public:
    vector<int> singleNumber(const vector<int>& nums) {
        int diff = accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());
        diff &= -diff;
        vector<int> res(2, 0);
        for (auto &a : nums) {
            if (a & diff) {
                res[0] ^= a;
            }
            else {
                res[1] ^= a;
            }
        }
        return res;
    }
};
//只有1个数出现1次,其余的数都出现3次
class Solution {
public:
    int singleNumber(const std::vector<int>& nums) {
        int one = 0, two = 0, three = 0;
        for (int i = 0; i < nums.size(); ++i) {
            two |= one & nums[i];
            one ^= nums[i];
            three = one & two;
            one &= ~three;
            two &= ~three;
        }
        return one;
    }
};

相关文章:

  • 2021-06-05
  • 2022-12-23
  • 2021-11-26
  • 2021-11-06
  • 2022-01-19
  • 2021-06-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-03-07
  • 2022-12-23
  • 2021-07-25
  • 2021-10-26
相关资源
相似解决方案