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?
题意 : 给定一个整数数组,除了一个元素外,每个元素都会出现两次。找到那一个。
注: 你的算法应该有一个线性运行时复杂性。你可以不使用额外的内存来实现它吗?
答题思路:因为一个数组中除了一个元素,其他元素都出现了两次,所以可以使用位用算异或(^)来实现,因为相同的元素进行异或,
其结果为0,所以当数组中的所有元素进行异或后,最后剩下的值就是只出现一次的那个值。
代码如下:
public class Solution {
public int singleNumber(int[] A) {
int num = 0;
for(int i = 0; i < A.length; i++) {
num ^= A[i];
}
return num;
}
}