标签:
给定一个数组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]。不能使用除法。
思路:leetcode原题。先从左往右,t[i]=t[0]*……t[i-1];然后从右往左,r[i]=t[i]*r[i+1]*……*r[n-1]
1 class Solution { 2 public: 3 vector<int> multiply(const vector<int>& A) { 4 int n=A.size(); 5 vector<int> tmp(n,0); 6 vector<int> res(n,0); 7 int left=1,right=1; 8 9 if(n<1) return res; 10 for(int i=0;i<n;i++){ 11 tmp[i]=left; 12 left*=A[i]; 13 } 14 for(int i=n-1;i>=0;i--){ 15 res[i]=right*tmp[i]; 16 right*=A[i]; 17 } 18 return res; 19 } 20 };
标签:
原文地址:http://www.cnblogs.com/zl1991/p/4795632.html