题目描述
给定一个数组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由上至下、由下至上连乘
1 class Solution { 2 public: 3 vector<int> multiply(const vector<int>& A) { 4 vector<int> B; 5 if(A.size()<=1)return B; 6 vector<int> arr1; 7 vector<int> arr2; 8 arr1.push_back(1); 9 int sum=1; 10 for(int idx=0; idx<=A.size()-2; ++idx) 11 { 12 sum=sum*A[idx]; 13 arr1.push_back(sum); 14 } 15 arr2.push_back(1); 16 sum=1; 17 for(int idx=A.size()-1; idx>=1; --idx) 18 { 19 sum=sum*A[idx]; 20 arr2.push_back(sum); 21 } 22 int length=A.size(); 23 for(int idx=0; idx<length; ++idx) 24 { 25 int tmp=arr1[idx]*arr2[length-1-idx]; 26 B.push_back(tmp); 27 } 28 return B; 29 } 30 };