目录
题目链接
题目简介
解题思路
先算出整个数组的乘积和0的个数,如果有一个0则除了0处下标其它全部为0,如果有两个或以上个0则全部为0,如果没有0,则用乘积除当前下标的数。
代码展示
int* productExceptSelf(int* nums, int numsSize, int* returnSize){
static int anser[100001]={0};
int sum=1;
int flag=0;
for(int i=0;i<numsSize;i++)
{
if(nums[i]!=0)
{
sum*=nums[i];
}
else if(nums[i]==0)
{
flag++;
}
if(flag>=2)
{
for (int i = 0; i < numsSize; i++)
anser[i] = 0;
}
}
if(flag==1)
{
for(int i=0;i<numsSize;i++)
{
if(nums[i]==0)
{
anser[i]=sum;
}
else
{
anser[i]=0;
}
}
}
else if(flag==0){
for(int i=0;i<numsSize;i++)
{
anser[i]=sum/nums[i];
}
}
*returnSize=numsSize;
return anser;
}
运行结果