leetcode single number2

来源:互联网 发布:淘宝客佣金最低是多少 编辑:程序博客网 时间:2024/06/06 19:31
//将一个整数右移k位再左移k位,不一定得到原来的结果//如果过程中间有对原数组中元素的修改,不可以乱用原值可以不用base * 2^k的形式,反而用ret |= (1<<i)的形式class Solution {public:    int singleNumber(int A[], int n) {        if(n == 0){            return 0;        }        if(n == 1){            return 1;        }        int ret = 0;        for(int i = 0; i < 32; ++i){            int cntzero = 0, cntone = 0;            for(int j = 0; j < n; ++j){                int bitrec = A[j] & 1;                if(bitrec){                    cntone++;                }                A[j] >>= 1;            }            if(cntone % 3 == 1){                    ret |= (1 << i);            }        }        return ret;    }};
0 0