只出现一次的数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只出现一次的数相关的知识,希望对你有一定的参考价值。

Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.

For example:

Given nums = [1, 2, 1, 3, 2, 5], return [3, 5]

class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
    int x_xor_y = 0;
    for (int n: nums) {
        x_xor_y ^= n;
    }
    // 找到最后一位1 
    // 出现1表示,这一点处两个数的值不一样,一个为0一个为1,不然不可能异或出现1
    int mask = x_xor_y & ~(x_xor_y - 1);
    int x = 0;
    int y = 0;
    // x: XOR of a,a,b,b,x
    // y: XOR of c,c,y
    for (int n: nums) {
        if (n & mask) {
            x ^= n;
        } else {
            y ^= n;
        }
    }
    return vector<int> {x, y};
}
};

 

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

class Solution {
public:
    int singleNumber(int A[], int n) {
        int num = 0;
    for (size_t i = 0; i < n; ++i){
        num ^= A[i];
    }
    return num;
    }
};

 

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

int singleNumber(vector<int> AA) {
    int ones = 0, twos = 0;
    //int size = sizeof(AA) / sizeof(int);
    for (int i = 0; i < AA.size(); i++){
        ones = (ones ^ AA[i]) & ~twos;
        twos = (twos ^ AA[i]) & ~ones;
    }
    return ones;
}

 

以上是关于只出现一次的数的主要内容,如果未能解决你的问题,请参考以下文章

数组中只出现一次的数(其它数出现k次)

数组中只出现一次的数

python 三个只出现一次的数

只出现一次的数

只出现一次的数

面试题---找出数组中两个只出现一次的数