Leetcode Problem Product of Array Except Self (Java) With Video

Given an array nums of n integers where n > 1,  return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Example:

Input:  [1,5,6,4]
Output: [120,24,20,30]

The below solution takes O(N) time complexity and O(N) space complexity

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int[] left = new int[nums.length];
        int[] right = new int[nums.length];
        int[] result= new int[nums.length];
        
        //fill the left array
        int p =1;
        for(int i =0;i<nums.length;i++){
            left[i] = p;
            p = p* nums[i];
        }
        
        //fill right array from the end
        int r =1;
        
        for(int i= nums.length-1;i>=0;i--){
            right[i] = r;
            r= r* nums[i];
        }
        
        for(int i=0;i<nums.length;i++){
            result[i] = left[i] * right[i];
        }
        
        return result;
        
        
    }
}

Here is the video explanation.