Все началось с простой задачи:
Дан массив чисел nums. Каждое число повторяется 2 раза, кроме одного. Нужно найти это число
Ввод: [1,3,2,1,2,8,8]
Вывод: 3
Естественно, все очень быстро выучили оптимальное решение: нужно сделать xor всех элементов и получится число
А решение вот такое:
def find_single(nums):
result = 0
for n in nums:
result ^= n
return result
P.S. Работает чисто на битовой магии и честном слове
——
Потом, значица, компании ультанули и насоздавали вот таких задачек:
https://leetcode.com/problems/single-number-ii/description/
https://leetcode.com/problems/single-number-iii/
И если за бугром такие задачки хоть как-то прижились, то у нас их могут решить, пожалуй, только олимпиадники и число провалов зашкаливало (после чего задачи из пула компании убирались - сам видел)
Да и нужны были они в основном системным программистам, ибо там каждый бит считают
——
И сейчас мы наблюдаем закат этого битового безумия
Кстати, в своем старом ролике (https://www.youtube.com/watch?v=MSrv3iH65ow) на Ютабчике разбирал прикольные подходы к таким задачкам
Так что если все еще считаешь биты, пока выходить на следующий уровень 🌭)
