您的位置:首页 > Web前端

剑指Offer——构建乘积数组

2017-11-03 00:38 246 查看
题目描述:

给定一个数组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 };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: