📜  门|门 IT 2007 |第 36 题(1)

📅  最后修改于: 2023-12-03 15:12:46.599000             🧑  作者: Mango

门|门 IT 2007 |第 36 题

题目描述

给定一个正整数数组,除了一个数字出现过一次外,其他每个数字都出现了两次。找到出现一次的数字。

示例

输入:[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)。提供一种不需要额外空间的方法来进行求解。