Один из подходов, который легко запомнить и легко сформулировать в интервью, состоит в том, чтобы использовать тот факт, что, если вы посмотрите на все числа в N битах, каждый бит будет установлен ровно в половине этих значений, а не в другой половине. ,
Если вы перебираете все значения в файле и сохраняете 32 значения в конце, вы получите 32 значения, которые точно (2 ^ 32/2) или немного меньше этого значения. Разница, что максимум (2 ^ 32/2) и сумма дает вам общее количество битов, установленных в каждой позиции пропущенных значений.
Когда у вас есть это, вы можете определить все возможные наборы из 4 значений, которые могут дать эти итоги. Принимая это во внимание, вы можете снова просмотреть значения в файле, проверив наличие значений, входящих в эти комбинации. Когда вы найдете один, комбинации, содержащие это значение, исключаются как возможности. Как только у вас останется только одна возможная комбинация, вы получите ответ.
Например, используя клев, у вас есть следующие значения:
1010
0110
1111
0111
1101
1001
0100
0101
0001
1011
1100
1110
Общее количество битов, установленных в каждой позиции:
7867
Вычитая их из 8 (4 ^ 2/2), получаем:
1021
Это означает, что существуют следующие возможные наборы из 4 значений:
1000
0000
0011
0010
1010
0001
0010
0000
(прости меня, если я что-то пропустил, я просто делаю это в лицо)
И затем, снова взглянув на исходные числа, мы сразу находим 1010, что означает, что первым был ответ.