Leetcode 136 Single Number 亦或

题意就是从一堆数中找出唯一的一个只存在一个的数。除了那个数,其他的数都是两个相同的数。

通过亦或的性质:

1)a^a = 0 0^a = a

2)交换律 a^b = b^ a

3)结合律 (a^b)^c=a^(b^c)

这样很容易证明将所有的数亦或就能得到唯一的一个只存在一个的数。

 1 class Solution {
 2 public:
 3     int singleNumber(vector<int>& nums) {
 4         int ans = nums[0];
 5         for(int i = 1;i<nums.size(); ++i){
 6             ans^=nums[i];
 7         }
 8         return ans;
 9     }
10 };

 

posted @ 2016-01-15 12:39  Breeze0806  阅读(169)  评论(0编辑  收藏  举报