```import java.util.ArrayList;
   import java.util.List;
public class Solution {
    public int[] multiply(int[] A) {
        // 初始化B
        int[] B = new int[A.length];
        // 排除数组A为空、数组A只包含一个数字0
        if (A.length <= 0) {
            return null;
        } else if (A.length == 1 && A[0] == 0) {
            return B;
        }

        // indexs存储索引和统计数组中0的个数
        List<Integer> indexs = new ArrayList<>();
        int mul = 1; //mul用于记录所有数字的累乘
        int mulO = 1;//mul0用于记录包含0的累乘
        for (int i = 0; i < A.length; i++) {
            if (A[i] == 0) {
                indexs.add(i);
            }
            // mul用于记录数组A所有数的累乘
            mul = A[i] * mul;
        }

        // 获取数字0的索引
        Integer index = null;
        if (indexs.size() > 0) {
            index = indexs.get(0);
        }

        // 统计包含0的数组A所有数累乘
        for (int i = 0; i < A.length; i++) {
            if (index != null && i != index) {
                // 累乘
                mulO = A[i] * mulO;
            }
        }

        if (indexs.size() > 1) {
            return B;
        } else {
            for (int i = 0; i < A.length; i++) {
                if (indexs.size() == 1 && index == i) {
                    // 遍历的数字为0
                    B[i] = mulO / 1;
                } else {
                    // 遍历的数字不为0
                    B[i] = mul / A[i];
                }
            }
        }
        return B;
    }
}
解题思路:
	常规解题思路,需考虑数组中包含0的情况;先将数组中0的个数统计出来,若数组中有2个0,则新数组的所有数均为0,若有一个0,则除0处的数字不为0其余均为0;若没有0,则先统计所有数的乘积mul,新数组对应处的数用mul除以该位置处即可。