首页 > 代码库 > A Product Array Puzzle

A Product Array Puzzle

Given an array arr[] of n integers, construct a Product Array prod[] (of same size) such that prod[i] is equal to the product of all the elements of arr[] except arr[i]. Solve it without division operator and in O(n).

 

Example:
arr[] = {10, 3, 5, 6, 2}
prod[] = {180, 600, 360, 300, 900}

 

 1     public static int[] selfExcluding(int[] input){ 2         if(input == null || input.length == 0) return null; 3         int len = input.length; 4         int[] output = new int[len]; 5         for(int i = 0; i < len; i ++){ 6             output[i] = 1; 7         } 8         int left = 1, right = 1; 9         for(int i = 1; i < input.length; i ++){10             left *= input[i - 1];11             output[i] *= left; 12             right *= input[len - i];13             output[len - i - 1] *= right;14         }15         return output;16     }