Поиск одного числа в списке
Кстати, вы можете расширить 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
Поиск одного числа в списке
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.