class Solution {
public:
//O(n)时间:分成前后两部分。
//前半部分:B[i]=B[i-1]*A[i-1];后半部分:反向遍历,利用tmp累乘A[i],B[i]*=tmp;
vector<int> multiply(const vector<int>& A) {
int len = A.size();
if(len == 0)
return {};
vector<int> B(len, A[0]);
for(int i=1; i<len; i++)//前半部分
B[i] = B[i-1]*A[i-1];
int tmp = 1;
for(int i=len-1; i>=0; i--)//后半部分
{
B[i] *= tmp;
tmp *= A[i];
}
return B;
}
};

京公网安备 11010502036488号