Рубрики
Без рубрики

Идентификационный код 238. Произведение массива, кроме Собственного

Решение + объяснение проблемы 238. Помеченный java, массив.

public class Solution {
    public int[] productExceptSelf(int[] nums) {
        int len = nums.length;
        int[] ans = new int[len];

        for (int i = 0, temp = 1; i < len; i++) {
            ans[i] = temp;
            temp *= nums[i];
        }
        for (int i = len - 1, temp = 1; i >= 0; i--) {
            ans[i] *= temp;
            temp *= nums[i];
        }

        return ans;
    }
}

После первого цикла for nums[i] равно произведению чисел из 0 к i - 1 . На каждой итерации второго цикла for/| nums[i] умножается на произведение чисел от i + 1 до len – 1 . Следовательно, после двух циклов for, nums[i][0] * nums[1] * … * числа[i-1] * … * числа[i+1] * … * nums[len-1] .

Временная сложность : O(n)

Дополнительное пространство : O(1)

Оригинал: “https://dev.to/algobot76/leetcode-238-product-of-array-except-self-3n8p”