题目: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?
中文描述:给定整数数组,除了一个元素之外,每个元素都会出现两次。找到那个单一的。
注意:
您的算法应具有线性运行时复杂度。你可以实现它而不使用额外的内存吗?
/**
* 题目的前提:算法应具有线性运行时复杂度。实现它而不使用额外的内存
* 我拿着这个题我就想着如何排序 如何遍历找到不同的元素
* 但是最后我发现这样做的时间复杂度都肯定大于n
* 看了别人的思路:发现XOR运算可以解决这个问题
* 两个相同的元素XOR之后为0
* 0 XOR Num = Num
* 所以答案也就出来了
* @param nums
* @return
*/
public int singleNumber(int[] nums) {
int rev = 0;
for (int i = 0; i < nums.length; i++) {
rev ^= nums[i];
}
return rev;
}