mosaic0123
BAN USERI used C++ and there are three situations.
1) Two zeros in original array - all entries in the result should be zero
2) One zero in original array - all entries except the one has zero in original array should be zero and the one has zero should has the product value
3) No zero in original array - just use product / arr[i]
int[] fill_product(int arr[]){
int product = 1;
int numOfZeros = 0;
int size = sizeof(arr)/sizeof(arr[0]);
for(int i = 0; i<size; i++){
if(arr[i]==0)
numOfZeros++;
else
product *= arr[i];
if(numOfZeros>1)
break;
}
int result[size];
fill(result,result+size,0);
if(numOfZeros>=2)
return result;
if(numOfZeros==1){
for(int i = 0; i<size; i++){
if(arr[i]==0)
result[i] = product;
}
return result;
}
for(int i = 0; i<size; i++)
result[i] = product / arr[i];
return result;
}
Perfect
- mosaic0123 January 12, 2015