Дан слайс целых чисел. Верните слайс той же длины, где на позиции i стоит
произведение всех элементов, кроме nums[i]. Деление использовать нельзя.
// ProductExceptSelf возвращает res, где res[i] = произведение nums[j] для всех j != i.
func ProductExceptSelf(nums []int) []int
Примеры
[2, 3, 4] → [12, 8, 6]
[1, 2, 3, 4] → [24, 12, 8, 6]
[-1, 1, 0, 3] → [0, 0, -3, 0]
[0, 0, 5] → [0, 0, 0]
Ограничения
0 ≤ len(nums) ≤ 10⁶; для одного элемента произведение пустого набора — 1.
- Гарантируется, что произведение любого подмножества помещается в int64.
- Входной слайс не изменять.
- Ожидается O(n) по времени и O(1) дополнительной памяти кроме результата.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.