タイトル説明
配列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];)
分析
これは、上記および下記の可変乗算製品で記録しました。
コード
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int len = A.size();
if (!len)
return {};
vector<int> B(len, 1);
int start = 1;
int end = 1;
for (int i = 0; i < len; i++) {
B[i] *= start;
start *= A[i];
}
for (int i = len - 1; i >= 0; i--) {
B[i] *= end;
end *= A[i];
}
return B;
}
};