Ctrl K

Произведение всех остальных

Средняя
Дан массив целых чисел values. Постройте массив той же длины, в котором на позиции i стоит произведение всех элементов values, кроме values[i]. Делением пользоваться нельзя, а решение должно работать за O(n). Гарантируется, что произведение любого префикса и любого суффикса values помещается в 32-битное знаковое целое. Дополнительно: получится ли обойтись O(1) дополнительной памяти, не считая самого ответа?
Пример 1
values=[2, 5, 3, 1] → [15, 6, 10, 30]

Для индекса 0: 5 · 3 · 1 = 15; для индекса 1: 2 · 3 · 1 = 6, и так далее.

Пример 2
values=[4, 0, -2, 3] → [0, -24, 0, 0]

Ноль стоит на индексе 1, поэтому ненулевой ответ только у него: 4 · (-2) · 3 = -24.

Пример 3
values=[-1, 7] → [7, -1]

Каждому элементу достаётся его единственный сосед.

Ограничения
  • 2 ≤ len(values) ≤ 10⁵
  • -30 ≤ values[i] ≤ 30
  • Произведение любого префикса и суффикса помещается в 32-битное знаковое целое
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый короткий рывок СредняяСтудии для записи СредняяСамый длинный отрезок с заданной суммой СредняяПакет правок на отрезках СредняяОтрезок с суммой, кратной делителю Средняя
загружаем Python…
Вход
values=[2, 5, 3, 1]
Ожидается
[15, 6, 10, 30]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 63 теста на сервере, включая скрытые.