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