题目链接:https://leetcode.com/problems/single-number-ii/
题意表明有一个数字出现了一次,其他数字出现了三次,那么实现一个模3的计数器即可。
1 class Solution 2 { 3 public: 4 int singleNumber(int A[], int n) 5 { 6 //实现了一个模3的计数器,(H,L)分别表示高位和低位。 7 //"某一位"第一次出现的时候,(H,L)为(0,1)。 8 //"某一位"第二次出现的时候,(H,L)为(1,0)。 9 //"某一位"第三次出现的时候,(H,L)为(1,1)。 10 11 int H = 0, L = 0, RST = 0; 12 for (int i = 0; i != n; ++i) 13 { 14 H |= (L & A[i]); 15 L ^= A[i]; 16 RST = H & L; //当H和L对应的位都为"1"的时候,RST为"1",表示需要清除H和L对应的位 17 H ^= RST; 18 L ^= RST; 19 } 20 21 return L; 22 } 23 };
Leetcode #137 Single Number II
原文:http://www.cnblogs.com/meowcherry/p/4395721.html