0

Она находит единственное неспаренное число в массиве , объясните как она работает

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        x=0
        for i in nums:
            x^=i
        return x
insolor
  • 49,104
dopefresh
  • 15
  • 5

1 Answers1

0

^ — побитовая сумма по модулю 2 (XOR).

Вот её таблица истинности:

введите сюда описание изображения

Эта операция обладает коммутативностью и ассоциативностью. Т.е. не важно, в каком порядке и с какой стороны подставлять значения. Из таблицы также следует, что

a ^ a == 0
a ^ 0 == a

Поэтому для тех элементов, которые имеют пару, в результате получится ноль. Останется побитовая сумма по модулю 2 непарных элементов. Если такой элемент один в массиве, то он и получится.