LeetCode OJ--Single Number

https://oj.leetcode.com/problems/single-number/

给一个数列,其中只有一个数不是两两相同的,在O(n)时间内求出来,并且不使用额外空间。

使用异或操作,如果是两个相同的数异或的话,就都消去了。

异或操作的单位元是0.

#include <iostream>
using namespace std;

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

int main()
{
    int A[3] = {2,3,2};
    class Solution sol;
    int ans = sol.singleNumber(A,3);
    cout<<ans<<endl;
}
原文地址:https://www.cnblogs.com/qingcheng/p/3787923.html