# 238. Product of Array Except Self (Leetcode || Java || Medium)

--

Given an integer array `nums`

, return *an array* `answer`

*such that* `answer[i]`

*is equal to the product of all the elements of* `nums`

*except* `nums[i]`

.

The product of any prefix or suffix of `nums`

is **guaranteed** to fit in a **32-bit** integer.

You must write an algorithm that runs in `O(n)`

time and without using the division operation.

**Example 1:**

**Input:** nums = [1,2,3,4]

**Output:** [24,12,8,6]

**Example 2:**

**Input:** nums = [-1,1,0,-3,3]

**Output:** [0,0,9,0,0]

**Constraints:**

`2 <= nums.length <= 105`

`-30 <= nums[i] <= 30`

- The product of any prefix or suffix of
`nums`

is**guaranteed**to fit in a**32-bit**integer.

**Follow up:** Can you solve the problem in `O(1) `

extra space complexity? (The output array **does not** count as extra space for space complexity analysis.)

*SOLUTION*

*SOLUTION*

class Solution {

public int[] productExceptSelf(int[] nums) {

int[] result = new int[nums.length];//declaring array to return

result[0] = 1;//element at 0 index declaring as 1 to multiply it by further elements

//multiplying left side elements

for(int i = 1; i < nums.length; i++){

result[i] = result[i — 1]*nums[i — 1];

}

//Initialising variable to multiply the right side elements

int product = 1;

for(int j = nums.length — 1; j >= 0; j — ){

result[j] = result[j]*product;

product *= nums[j];//storing all the product of right side elements

}

return result;

}

}