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!