算法积累

计算最大数

      对数组进行排序,取最大的n个数和 (最大数*(绝对值乘积最大的数)),两者取最大值即为最大数。

/**
     * 題目:求一个整数数组中的三个数最大乘积
     * 思路:若全是正數,則数组按顺序排序后,最大三个数的乘积即为最大值
     *      若全是负数,同样最大三个数的乘积即为最大值
     *      若既有正数也有负数,则;两数的绝对值最大值*最大正数
     *                           两数的绝对值= (两最大正数的乘积 或者两最小负数的乘积)
     */
    public long getMax(int[] args) {
        Arrays.sort(args);
        int length = args.length;
        //全正数和全负数的最大值
        int maxNum = args[length-1] * args[length-2] * args[length-3];

        //既有正数也有负数
        // int maxNum2 = args[length-1] * (两数的绝对值最大值 = )
        int maxNum2 = args[length-1] * args[0] * args[1];
        int maxNum3 = args[length-1] * args[length-2] * args[length-3];
        return Math.max(maxNum, maxNum2);
    }

 

posted on 2024-12-07 20:14  丶柚子  阅读(25)  评论(0)    收藏  举报

导航