Total Accepted: 113794
Total Submissions: 234460
Difficulty: Medium
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?
Subscribe to see which companies asked this question
Hide Similar Problems
Have you met this question in a real interview?
Yes
No
题目要求线性时间复杂度,并且不需要额外的存储空间。这里利用异或运算性质求解
1、交换律
2、结合律(即(a^b)^c == a^(b^c))
3、对于任何数x,都有x^x=0,x^0=x
4、自反性 A XOR B XOR B = A xor 0 = A
AC代码如下:
public class SingleNumber {
public int singleNumber(int[] nums) {
int a = nums[0];
for (int i = 1; i < nums.length; i++) {
a ^= nums[i];
}
return a;
}
}