[leetcode]137. Single Number II
Analysis
唉 感觉应该GG了,还是好好刷题看论文吧—— [每天刷题并不难0.0]
Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
我恨bit manipulation,在讨论区看了大神的总结然后做出来的,我什么时候才能变成大神啊!!附上链接:
https://leetcode.com/problems/single-number-ii/discuss/43295/Detailed-explanation-and-generalization-of-the-bitwise-operation-method-for-single-numbers
Implement
class Solution {
public:
int singleNumber(vector<int>& nums) {
int x1 = 0, x2 = 0, mask = 0;
for(int i:nums){
x2 ^= x1&i;
x1 ^= i;
mask = ~(x1&x2);
x1 &= mask;
x2 &= mask;
}
return x1;
}
};