位运算

【剑指 offer】数组中唯一只出现一次的数字

2019-05-08  本文已影响0人  邓泽军_3679

1、题目描述

在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次。

请找出那个只出现一次的数字。

你可以假设满足条件的数字一定存在。

思考题:

样例
输入:[1,1,1,2,2,2,3,4,4,4]
输出:3

2、问题描述:

3、问题关键:

4、C++代码:

class Solution {
public:
    int findNumberAppearingOnce(vector<int>& nums) {
        int n = nums.size();
        int bit[32] = {0};
        for (int i = 0; i < 32; i ++)
            for (int j = 0; j < n; j ++) 
                bit[i] += (nums[j] >> i) & 0x01;
        int res = 0;
        for (int i = 0; i < 32; i ++) 
            res += (bit[i] % 3) << i;
        return res;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读