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,2,3,4]
Output:[24,12,8,6]
Note: Please solve it without division and in O(n).
Follow up:
Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* productExceptSelf(int* nums, int numsSize, int* returnSize) {
*returnSize=numsSize;
int *res=(int *)malloc(sizeof(int)*(*returnSize));
int la[numsSize],lb[numsSize];
int i,j,k,l;
for(i=0;i<numsSize;i++)
{
if(i==0)
{
la[i]=1;
lb[numsSize-i-1]=1;
continue;
}
la[i]=nums[i-1]*la[i-1];
lb[numsSize-i-1]=nums[numsSize-i]*lb[numsSize-i];
}
for(i=0;i<numsSize;i++)
res[i]=la[i]*lb[i];
return res;
}