137. Single Number II LeetCode

来源:互联网 发布:知行小学在大连排名 编辑:程序博客网 时间:2024/05/17 01:13

题意:给出一个数组,除了一个数只出现了1次,其他的都出现了3次,求这个数。
题解:不管是其他数字出现了几次,我们都可以用这个方法,就是按位来求,把所有数的某一位全加起来,然后%出现的次数,如果是1,那么就说明那个要求的数这位是1,如果是0,那么就说明要求的那个数这位为0.求完32位就是答案。

class Solution {public:    int singleNumber(vector<int>& nums) {        int n = nums.size();        int ans = 0;        for(int i = 0; i < 32; i++)        {            int bit = 0;            for(int j = 0; j < n; j++)            {                bit += (nums[j] >> i) & 1;            }            ans |= ((bit%3)<<i);        }        return ans;    }};
0 0
原创粉丝点击