import java.util.ArrayList;
public class Solution {
    //B[i] 分成 left[i] * right[i];
    //left[i + 1] = left[i] * A[i];
    //right[i] = right[i + 1] * A[i + 1];
    public int[] multiply(int[] A) {
        int[] B = new int[A.length];
        //left[0] = 1
        B[0] = 1;
        for(int i=0; i< B.length - 1; i++){
            //第一次遍历,先把 left[i] 存进B[i]
            B[i + 1] = B[i] * A[i]; 
        }
        //缓存 right[i + 1]
        //最后一个元素的 right == 1
        int tmp = 1;
        //后续遍历,从倒数第二个元素开始
        for(int i = A.length -2; i >= 0; i--){
            //right[i] = right[i + 1] * A[i + 1]
            tmp = tmp * A[i + 1];
            
            //第二次遍历,把 left[i] * right[i] 存进 B[i]
            //B[i] = right[i] * left[i]
            B[i] = tmp * B[i];
        }
        
        
        return B;
    }
    

}