alg-查找只出现一次的数

mac2022-06-30  22

//只有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; } };

转载于:https://www.cnblogs.com/smallredness/p/11303394.html

最新回复(0)