Поиск одного числа в списке

Кстати, вы можете расширить algorithm-design эту идею, чтобы очень быстро algorithm найти два уникальных номера algorithm среди списка дубликатов.

Назовем algorithm уникальные числа a и b. Сначала algorithms возьмите XOR всего, как предложил algorithms Кайл. Мы получаем a^b. Мы algorithm знаем, что a^b != 0, так algorithm-design как a != b. Выберите любой algorithm 1 бит a^b и используйте его puzzle в качестве маски - более algorithms подробно: выберите x как algorithm степень числа 2, чтобы x puzzle & (a^b) было ненулевым.

Теперь algorithms разделите список на два подсписка puzzle - один подсписок содержит algorithms все числа y с y&x == 0, а puzzle остальные идут в другом подсписке. По algorithms тому, как мы выбрали x, мы algorithms знаем, что a и b находятся algorithm-design в разных корзинах. Мы также puzzle знаем, что каждая пара дубликатов puzzle все еще находится в одном puzzle и том же сегменте. Таким algorithms образом, теперь мы можем algorithm применить старую хитрость algorithm-design «исключающее ИЛИ всех» к puzzle каждой корзине независимо algorithm-design друг от друга и полностью algorithm выяснить, что такое a и b.

Бам.

algorithm

puzzle

2022-10-16T08:40:13+00:00
Вопросы с похожей тематикой, как у вопроса:

Поиск одного числа в списке