剑指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; } };