Вопрос о Single Number II из leetcode:
Учитывая массив целых чисел, каждый элемент появляется три раза, кроме одного. Найдите этот единственный. Заметка: Ваш алгоритм должен иметь сложность линейного выполнения. Не могли бы вы реализовать его без использования дополнительной памяти?
На самом деле, я уже нашел решение с сайта, решение:
public int singleNumber(int[] A) {
int one = 0, two = 0;
for (int i = 0; i < A.length; i++) {
int one_ = (one ^ A[i]) & ~two;
int two_ = A[i] & one | ~A[i] & two;
one = one_;
two = two_;
}
return one;
}
Однако, я не знаю, почему этот код может работать, и на самом деле я не знаю, как думать об этой проблеме, когда я впервые увидел это? Любая помощь. ТНХ!