Я пытаюсь решить эту проблему leetcode: Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.Можно ли решить X и Y, зная X^Y и X + Y?
Я знаю стандартное решение для вычисления X^Y, и получить самый низкий необычный бит, ...
Но у меня есть еще одна идея:
Я могу получить X^Y посредством XOR всех чисел;
xored = 0
for i in nums:
xored = xored^i
Я также могу получить X + Y, добавляя каждый двоичный бит чисел в отдельности, а также модульным 2.
# pseudo-code
bitvector = [0]* number of bits of integer
for n in numbers:
for bit in bitvector:
bitvector[i] += n[bit]
bitvector[i] = bitvector[i]%2
Но я не знаю, как получить X и Y, с X + Y и X^Y, или даже если это возможно.
Вы можете помочь?
нет, вы не можете: http://stackoverflow.com/questions/25565626/determine-numbers-based-on-their-sum-and-xor – ymonad
Попробуйте решить X^Y = X + Y = 1111b и убедитесь сами , –
Как глупо от меня ... – NeoWang