[LeetCode]136. Single Number(找出数组中单独出现的数)

来源:互联网 发布:罗技鼠标推荐 知乎 编辑:程序博客网 时间:2024/05/22 14:16

136. 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?
您的算法应具有线性运行时复杂性。 你能实现它,而不使用额外的内存?

C++class Solution {public:    int singleNumber(vector<int>& nums) {        int length = nums.size();        if(length == 1)            return nums[0];        int a = 0;        for(int i=0;i<length;i++){            a ^= nums[i];//利用异或性质 对于任何数x,都有x^x=0 ,x^0=x ,a^b=b^a 所以 x^y^x = y        }        return a;    }};

注意:

  • 异或性质
  • 1、交换律 (a^b = b^a)
  • 2、结合律(即(a^b)^c = a^(b^c))
  • 3、对于任何数x,都有x^x=0,x^0=x 所以 x^y^x = y
  • 自己着实没想出来好办法,只好百度了一下,异或很重要…
0 0
原创粉丝点击