question
Given an array A[n] of n numbers, create an output array such that Out[i] is equal to the product of all the elements of A[n] except A[i]. Ex. Out assuming n >= 5 will be the product of the numbers from A through A and the numbers from A through A[n - 1]. Solve this without using the division operator and in O(n).
The value of Out[i] is the product of all numbers before/after Out[i] - separate the solution accordingly.
At each position i in the output array, the value will be the product of all numbers before/after Out[i]. We can get the desired output by using a second array and traversing the input array twice.

In the first iteration, traverse the input array left-to-right and assign Out[i] to the product of all numbers preceding A[i]. Next traverse the array again in the reverse direction and multiply Out[i] by all numbers that followed A[i]. Now each element in Out[] will contain the product of all the elements of A[] except A[i].

```int[] productArray(int[] A, int[] Out) { int result = 1; for (int i = 0; i < A.size; i++) { Out[i] = result; result *= A[i]; } result = 1; for (int i = A.size - 1; i >= 0; i--) { Out[i] *= result; result *= A[i]; } return Out; } ```

Thoughts or alternate solution? Let us know in the comments below!