当前位置:网站首页>238.除自身以外数组的乘积

238.除自身以外数组的乘积

2022-06-11 21:36:00 爱学代码的学生

题目描述:

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积

题目分析:

此题我们使用前后缀法

对于此题我们可以理解我们需要将下标为i之前下标为0~i-1的元素和下标为i+1~n的元素之积。

那对于此题我们可以设置一个数组用来存储此元素之前的元素之积(前缀)。

然后从最后一个元素进行乘积(尾缀)。

代码实现如下:

int* productExceptSelf(int* nums, int numsSize, int* returnSize){
    int* a = (int*)malloc(numsSize*sizeof(int));//设置一个新数组
    int add = 1;
    for (int i = 0; i < numsSize; i++)
    {
        a[i] = add;      //第一个元素前没有元素所以存储1(乘积后也为本身)
        add *= nums[i];
    }
    add = 1;
    for (int i = numsSize - 1; i >= 0; i--)
    {
        a[i] *= add;         //从后向前乘积,最后一个元素里存储为前面所有元素之积,所以乘1
        add *= nums[i];
    }
    *returnSize = numsSize;
    return a;
}

原网站

版权声明
本文为[爱学代码的学生]所创,转载请带上原文链接,感谢
https://blog.csdn.net/rinki123456/article/details/122798434