1: class Solution {
2: public:
3: int singleNumber(vector<int>& nums) {
4: int one = 0, two = 0, three = 0;
5: for (int i = 0; i < nums.size(); i++) {
6: two |= one & nums[i]; // get the bits that appears twice
7: one ^= nums[i]; // cancel the bits that appears twice
8: three = one & two; // get the bits that appears three times
9: one ^= three; // cancel the bits that appears three times
10: two ^= three; // cancel the bits that appears three times
11: }
12: return one;
13: }
14: };
Saturday, August 13, 2016
137. Single Number II
The comment in the code explains the solution clearly.
Labels:
bit manipulation,
leetcode
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment