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; }