构建乘积数组

给定一个数组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 };

 

posted @ 2015-09-09 18:35  鸭子船长  阅读(137)  评论(0编辑  收藏  举报