238. Product of Array Except Self c语言
2016-08-08 22:02
260 查看
1、题目链接:点击打开链接
2、题目:
Given an array of n integers where n > 1,
return an array
equal to the product of all the elements of
Solve it without division and in O(n).
For example, given
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
3、题目说不能使用除法,我还是用了,(⊙﹏⊙)b:
4、参考别人的思路,然后写的代码:
/**
* 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) {
int *result=(int*)malloc(sizeof(int)*numsSize);
int *left=(int*)malloc(sizeof(int)*numsSize);
int *right=(int*)malloc(sizeof(int)*numsSize);
int i;
for(i=0;i<numsSize;i++){
if(i==0){
left[i]=1;
right[numsSize-1-i]=1;
}
else{
left[i]=left[i-1]*nums[i-1];
right[numsSize-1-i]=right[numsSize-1-i+1]*nums[numsSize-1-i+1];
}
}
for(i=0;i<numsSize;i++){
result[i]=left[i]*right[i];
// printf("%d,%d,%d\n",left[i],right[i],result[i]);
}
*returnSize=numsSize;
return result;
}
2、题目:
Given an array of n integers where n > 1,
nums,
return an array
outputsuch that
output[i]is
equal to the product of all the elements of
numsexcept
nums[i].
Solve it without division and in O(n).
For example, given
[1,2,3,4], return
[24,12,8,6].
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
3、题目说不能使用除法,我还是用了,(⊙﹏⊙)b:
/** * 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) { int s,i,k,s2; int *result=(int*)malloc(sizeof(int)*numsSize); k=0; s=1;s2=1; for(i=0;i<numsSize;i++){ if(nums[i]==0){ k++; } else s2*=nums[i]; s*=nums[i]; result[i]=0; } //printf("%d,%d,%d\n",s,s2,k); if(k==0){ for(i=0;i<numsSize;i++) result[i]=s/nums[i]; } else if(k==1){ for(i=0;i<numsSize;i++) if(nums[i]==0) result[i]=s2; } *returnSize=numsSize; return result; }
4、参考别人的思路,然后写的代码:
/**
* 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) {
int *result=(int*)malloc(sizeof(int)*numsSize);
int *left=(int*)malloc(sizeof(int)*numsSize);
int *right=(int*)malloc(sizeof(int)*numsSize);
int i;
for(i=0;i<numsSize;i++){
if(i==0){
left[i]=1;
right[numsSize-1-i]=1;
}
else{
left[i]=left[i-1]*nums[i-1];
right[numsSize-1-i]=right[numsSize-1-i+1]*nums[numsSize-1-i+1];
}
}
for(i=0;i<numsSize;i++){
result[i]=left[i]*right[i];
// printf("%d,%d,%d\n",left[i],right[i],result[i]);
}
*returnSize=numsSize;
return result;
}
相关文章推荐
- 238. Product of Array Except Self (C++)
- leetcode238. Product of Array Except Self
- [leetcode] 238. Product of Array Except Self
- 238. Product of Array Except Self
- 238. Product of Array Except Self
- 【Leet Code】238. Product of Array Except Self---Medium
- Leetcode ☞ 238. Product of Array Except Self ☆
- 【leetcode】238. Product of Array Except Self
- 【leetcode】238. Product of Array Except Self
- LeetCode 238. Product of Array Except Self
- 238. Product of Array Except Self
- LeetCode 238. Product of Array Except Self 题解(C++)
- LeetCode- 238. Product of Array Except Self - 思路详解 -C++
- LeetCode 238. Product of Array Except Self
- leetcode 238. Product of Array Except Self
- 238. Product of Array Except Self (除本身之外的数组之积)
- 238. Product of Array Except Self
- [LeetCode] 238. Product of Array Except Self 除本身之外的数组之积
- 238. Product of Array Except Self
- 238. Product of Array Except Self