题目描述:
给定一个数组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]。不能使用除法。
分析:
分别计算A[0]*A[1]*...*A[i-1]和A[i+1]*...*A[n-1],最后相乘即可。
代码:
1 class Solution { 2 public: 3 vector<int> multiply(const vector<int>& A) { 4 vector<int> a; 5 int ASize = A.size(); 6 if(ASize == 0 || ASize == 1) return a; 7 vector<int> b; 8 b.push_back(A[ASize - 1]); 9 for(int i = 1; i < ASize; i++) { 10 b.push_back(b[i - 1]*A[ASize - 1 - i]); 11 } 12 a.push_back(b[ASize - 2]); 13 int tmp = A[0]; 14 for(int i = 1; i < ASize - 1; i++) { 15 a.push_back(tmp * b[ASize - i - 2]); 16 tmp *= A[i]; 17 } 18 a.push_back(tmp); 19 return a; 20 } 21 };