Ответ
Ответ не найден
Ответ 18+ 🔞
Вот тебе, дружище, реальная история из жизни, про то, как я однажды словил такой пиздец, что до сих пор волосы дыбом встают. Сижу я значит, пишу на Python, всё как обычно. Задача — проверить, есть ли в списке дубликаты. Ну, думаю, ерунда, ща на коленке набросаю.
def has_duplicates_bad(lst):
for i in range(len(lst)):
for j in range(len(lst)):
if i != j and lst[i] == lst[j]:
return True
return False
Смотрю на этот код и чувствую — что-то не так. Подозрение ебать чувствую. А потом — бац! — осенило. Да я же тут, сука, сравниваю каждый элемент с каждым, включая его же самого! И потом отдельно проверяю, что i != j. Это ж, блядь, квадратичная сложность на ровном месте, O(n²), ёпта! Как будто для проверки одного билетика в кино весь зал пересаживаешь.
И тут я вспоминаю про set. Ну ты ж понимаешь, set — он же, хитрая жопа, сам дубликаты отбрасывает. Беру и пишу нормально:
def has_duplicates_good(lst):
return len(lst) != len(set(lst))
Одна строчка, Карл! И сложность O(n). Всё. Тишина. Красота. Я сам от себя охуел на секунду. Весь этот мой первый уёбищный код — это как приехать на такси из Москвы в Питер, потому что забыл, что есть поезда. Э, бошка, думай иногда!
Вот так и живём. Сначала делаем как попало, а потом включаем мозг и находим способ в десять раз короче и в сто раз быстрее. Главный вывод? Не усложняй там, где можно просто. А то ведь и правда можно до ручки допи*доваться.