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;
    }
};