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;

    }

};

 

你可能感兴趣的:(LeetCode)