题目描述
给定一个数组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];)
问题分析
-
B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1]`
-
从左到右算 B[i]=A[0]A[1]...*A[i-1]`
-
从右到左算B[i]=A[i+1]...*A[n-1]`
解题思路1
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int n = A.size();
int ret = 1;
vector<int> b(n);
for (int i = 0; i < n; ret *= A[i++])
{
b[i] = ret;
}
//另外一边
ret = 1;
for (int i = n - 1; i >= 0; ret *= A[i--])
{
b[i] *= ret;
}
return b;
}
};
网友评论