标签:
题目:
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 }
标签:
原文地址:http://www.cnblogs.com/raichen/p/4929164.html