Что делает строка ans^=x, прилагаю задачу и код
Объясните фрагмент ans^=x.
Для массива целых чисел, где все элементы, кроме одного, встречаются дважды, найдите уникальный элемент.
Пример:
a = [1, 2, 3, 4, 3, 2, 1]
Уникальный элемент - 4
int lonelyinteger(vector<int> a) {
int ans=0;
for(auto x:a) ans^=x;
return ans;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
^, как вы справедливо заметили в метках — операция xor.
А запись a @= b означает a = a @ b, т.е.
ans ^= x;
означает
ans = ans ^ x;
Если же вопрос о смысле сего действа, то заметим, что после двух xor с одним и тем же числом мы получаем исходное значение:
a ^ x ^ x == a
Дальше понятно, почему это делается? :)
P.S. Картинками здесь вопросы задавать крайне не рекомендуется...