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”