问题描述:

 

Given a non-empty 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?

 

Example 1:

 

Input: [2,2,1]
Output: 1

 

Example 2:

 

Input: [4,1,2,1,2]
Output: 4

 

思路:

考虑异或运算, 例如5^6,就是101^110,结果是011.即两个完全相同的数字进行异或运算,得到的结果为0,。

根据以上特性,将所有num中的数字依次进行异或运算,则其中重复的项经过运算为0,最终结果即单个的项

又由于尽量不适用其他内存,因而考虑将每一步异或结果放置于num[0]的位置

代码:

 

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        for i in nums[1:]:
            nums[0] = i^nums[0]
        return nums[0]

 

相关文章:

  • 2021-09-26
  • 2022-12-23
  • 2021-08-04
  • 2021-07-25
  • 2021-09-28
猜你喜欢
  • 2022-12-23
  • 2021-11-03
  • 2022-01-26
  • 2021-05-18
  • 2021-09-21
  • 2021-06-23
相关资源
相似解决方案