题目描述:给定一个数组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]。不能使用除法。
(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)
code:
package offer;
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int len = A.size();
vector<int> res;
if( len == 0 )
return res;
res = vector<int>(len, 1);
// 求前半部分的积
vector<int> first(len, 1);
for( int i=1;i<len;i++ )
first[i] = first[i-1] * A[i-1];
// 求后半部分的积
vector<int> second(len, 1);
for( int i=len-2;i>=0;i-- )
second[i] = second[i+1] * A[i+1];
// 求B[i]
for( int i=0;i<len;i++ )
res[i] = first[i] * second[i];
return res;
}
};
JZ51构建乘积数组
最新推荐文章于 2021-08-10 07:45:20 发布