LeetCode_Single Number II

Given an array of integers, every element appears three times except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

分析: 统计每一位1出现的个数,最后摸3求余数,1则置最终位为1

class Solution {
public:
    int singleNumber(int A[], int n) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        int res = 0;
        int x, sum;
        
        for(int i = 0; i < 32; ++i){
           
            sum = 0;
            x = (1<<i);
            
            for(int j = 0; j< n; ++j)
                if(A[j]&x)
                    ++sum;
                    
            sum = sum%3;
            
            if(sum == 1)
                res |= x;
        }
        
        return res;
    }
};
原文地址:https://www.cnblogs.com/graph/p/3350771.html