剑指offer---构建乘积数组

题目:构建乘积数组

要求:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。

class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
    
    }
};

解题代码:

class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        int len = A.size();
        vector<int> res(len);
        vector<int> array1(len);
        vector<int> array2(len);
        array1[0] = 1;
        array2[len-1] = 1;

        // 计算array1的值
        for(int i = 1; i < len; i++)
            array1[i] = array1[i-1] * A[i-1];

        // 计算array2的值
        for(int i = len - 2; i >= 0; i--)
            array2[i] = array2[i+1] * A[i+1];

        // 将array1与array2对应元素相乘即是最后结果
        for(int i = 0; i < len; i++)
            res[i] = array1[i] * array2[i];
        return res;
    }
};
原文地址:https://www.cnblogs.com/iwangzhengchao/p/9960597.html