
Найди баг в коде. Что вернёт функция для 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) доп. память. Идеальное решение классической задачи.
