整型数组nums,在数组中找出由三个数字组成的最大乘积,并输出这个乘积。
    乘积不会越界

    1. public class MaxProduct {
    2. public static void main(String[] args) {
    3. System.out.println(sort(new int[]{1, 2, 3, 4, 5, 6}));
    4. System.out.println(getMaxMin(new int[]{1, 2, 3, 4, 5, 6}));
    5. }
    6. private static int sort(int[] nums) {
    7. Arrays.sort(nums);
    8. int n = nums.length;
    9. return Math.max(nums[0] * nums[1] * nums[n - 1], nums[n - 1] * nums[n - 2] * nums[n - 3]);
    10. }
    11. //线型扫描
    12. public static int getMaxMin(int[] nums) {
    13. int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
    14. int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
    15. for (int num : nums) {
    16. if (num < min1) {
    17. min2 = min1;
    18. min1 = num;
    19. } else if (num < min2) {
    20. min2 = num;
    21. }
    22. if (num > max1) {
    23. max3 = max2;
    24. max2 = max1;
    25. max1 = num;
    26. } else if (num > max2) {
    27. max3 = max2;
    28. max2 = num;
    29. } else if (num > max3) {
    30. max3 = num;
    31. }
    32. }
    33. return Math.max(min1 * min2 * max1, max1 * max2 * max3);
    34. }
    35. }