public class Solution {
    /**
     * 最大乘积
     * @param A int整型一维数组 
     * @return long长整型
     */
    public long solve (int[] A) {
        // write code here
        //1.排序后 可能  全 负  最大 的 三个 ,正数也一样,
        //如果有负有正,那么就是最小的2个负数和一个正数,考虑只有一个负数情况,
        //如果只有一个负数 ,都是正数,那么选非负数的3个最大正数,只有3个元素,那么没得选了,三个元素
        //所以 全正 全负  选最后的三个数
        // 不是 那就是选两个负数 一个最大的正数
        if(A == null ||A.length <3){
            return 0;
        }
        Arrays.sort(A);
        long reuslt1 =  (long)A[0] *A[1] * A[A.length - 1] ;
        long result2 =  (long)A[A.length - 1] *A[A.length - 2] *A[A.length - 3] ;
        return Math.max(reuslt1, result2);
    }
}