美文网首页
137. Single Number II

137. Single Number II

作者: larrymusk | 来源:发表于2017-12-02 18:44 被阅读0次

由于所有数字都出现奇数次,
所以无法直接使用异或操作。考虑到计算机使用二进制存储数字,可以建立一个32
位的数字,统计每一位1出现的次数,如果一个整数出现了三次,那么三个0或者三
个1对3取余都为0,对每个数的对应位都加起来对3取余,剩下的就是 Single
Number 。

int singleNumber(int* nums, int numsSize) {
    
    int * bit = calloc(32, sizeof(int));
    
    int result = 0;
    for(int i = 0; i < 32; i++){
        for(int j = 0; j < numsSize;j++){
            bit[i] += nums[j]>>i&0x1;
            bit[i] %= 3;
        }
        
        result |= bit[i]<<i;
        
    }
    
    return result;
    
}

相关文章

网友评论

      本文标题:137. Single Number II

      本文链接:https://www.haomeiwen.com/subject/cftobxtx.html