[leetcode]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?
算法思路:
抑或^满足交换律和结合律
交换律: a ^ b ^ c ^ d = a ^ d ^ b ^ c;
结合律: a ^ b ^ c ^ d = a ^ (d ^ b) ^ c;
相同数字 a ^ a = 0
代码如下:
1 public class Solution { 2 public int singleNumber(int[] a) { 3 int res = 0; 4 for(int tem : a){ 5 res ^= tem; 6 } 7 return res; 8 } 9 }