LintCode 83: Single Number II (模3运算,经典位运算题)

2019-04-13 12:33发布

经典位运算题。
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。 在线评测地址: http://www.lintcode.com/problem/single-number-ii/ 解法参考九章,基于模3运算。其中ONES 和 TWOS 表示:
如果TWOS里面ith是1,则ith当前为止出现1的次数模3的结果是2
如果ONES里面ith是1,则ith目前为止出现1的次数模3的结果是1 class Solution { public: /** * @param A: An integer array * @return: An integer */ int singleNumberII(vector &A) { int ONES = 0, TWOS = 0; for (auto i : A) { ONES = (ONES ^ i) & (~TWOS); // cout<<"ONES = "<