📅  最后修改于: 2023-12-03 15:12:46.599000             🧑  作者: Mango
给定一个正整数数组,除了一个数字出现过一次外,其他每个数字都出现了两次。找到出现一次的数字。
输入:[2,2,1] 输出:1
输入:[4,1,2,1,2] 输出:4
这道题目可以使用异或运算来进行求解。异或的规则是:当两个相同数字进行异或运算时,结果为0,当不同数字进行异或运算时,结果为1。
例如:2 ^ 2 = 0,0 ^ 1 = 1,1 ^ 2 = 3。
那么对于这个数组中除了一个数字出现一次以外,其他数字都出现两次的情况来说,我们可以对所有数字进行异或运算,因为相同数字异或后结果为0,所以最终的结果就是那个出现一次的数字。
class Solution:
def singleNumber(self, nums: List[int]) -> int:
res = 0
for num in nums:
res ^= num
return res
本题解使用异或运算实现,时间复杂度为O(n),空间复杂度为O(1)。提供一种不需要额外空间的方法来进行求解。