题目描述:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?
示例 1:
示例 2:
题目分析:
这道题,我们可以使用位运算的两个公式解决。第一个公式是 A ^ A = 0
,第二个公式是 A ^ 0 = A
。所以,只要利用这两个公式,把数组内的所有数字都进行按位异或操作,我们就能得到只出现一次的数字。因为出现两次的所有数字按位异或的结果是 0
, 0
又与出现一次的数字按位异或就可以得到这个数字本身。例如,数组 [4,1,2,1,2]
, 4 ^ 1 ^ 2 ^ 1 ^ 2 = 4 ^ (1 ^ 1) ^ (2 ^ 2) = 4 ^ 0 = 4
。
题解:
执行用时: 1 ms
内存消耗: 38.5 MB
题目来源:力扣(LeetCode)