Самым важным моментом здесь является оператор XOR, обозначаемый ^. Если мы напишем «result ^ = num», это также можно записать как «result = result ^ num»
Это решение работает, потому что мы гарантируем, что каждый элемент появляется дважды, кроме 1 из элементов.
Используя XOR, каждый раз, когда мы XOR числа дважды на один и тот же номер, мы получаем один и тот же исходный номер. Например: 4 ^ 1 = 5 и 5 ^ 1 = 4. Другой способ сказать это: 4 ^ 1 ^ 1 = 4.
Обратите внимание, что любое число XOR 0 является самим числом, пример: 0 ^ 5 = 5
Мы проведем oop через все элементы в списке. Давайте посмотрим, что произойдет с входными данными [2, 2, 1]:
def single_number(list):
result = 0
for num in list:
result ^= num
print(result)
return result
Оператор печати выдаст:
2
0
1
Result starts as 0.
1st iteration: result = result ^ num = 0 ^ 2 = 2
2nd iteration: result = result ^ num = 2 ^ 2 = 0
3rd iteration: result = result ^ num = 0 ^ 1 = 1
Сначала вы должны получить XOR logi c , Затем убедите себя, что если число появится дважды, оно вернет одно число di git в исходную форму. Другой пример:
[2, 3, 4, 3, 4]
2 ^ 3 = 1
1 ^ 4 = 5
5 ^ 3 = 6
6 ^ 4 = 2