Single Number

题目:

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

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

解析:

用异或

 1 class Solution {
 2 public:
 3     int singleNumber(vector<int>& nums) {
 4         vector<int>::iterator it = nums.begin();
 5         int a = 0;
 6         while(it != nums.end())
 7             a ^= *it++;
 8         return a;
 9     }
10 };

根据异或这种特性还可以进行两个元素的交换工作

1 void swap3(int &a,int &b)
2 {
3     a ^= b;
4     b ^= a;
5     a ^= b;
6     cout<<"a:"<<a<<"    b:"<<b<<endl;
7 }
原文地址:https://www.cnblogs.com/raichen/p/4929164.html