Ответ на викторину

Найди баг в коде. Что вернёт функция для nums = [0, 0]?

def product_except_self(nums):
n = len(nums)
res = [1] * n

prefix = 1
for i in range(n):
res[i] = prefix
prefix *= nums[i]

suffix = 1
for i in range(n - 1, -1, -1):
res[i] *= suffix
suffix *= nums[i]

return res

Правильный ответ: [0, 0]

Никакого деления тут нет — вариант с ошибкой это ловушка для невнимательных. Алгоритм честно перемножает нули: префикс становится 0 после первого элемента, суффикс тоже 0. В итоге оба элемента результата равны 0. Код корректен, O(n) время, O(1) доп. память. Идеальное решение классической задачи.