整型数组nums,在数组中找出由三个数字组成的最大乘积,并输出这个乘积。
乘积不会越界
public class MaxProduct {public static void main(String[] args) {System.out.println(sort(new int[]{1, 2, 3, 4, 5, 6}));System.out.println(getMaxMin(new int[]{1, 2, 3, 4, 5, 6}));}private static int sort(int[] nums) {Arrays.sort(nums);int n = nums.length;return Math.max(nums[0] * nums[1] * nums[n - 1], nums[n - 1] * nums[n - 2] * nums[n - 3]);}//线型扫描public static int getMaxMin(int[] nums) {int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;for (int num : nums) {if (num < min1) {min2 = min1;min1 = num;} else if (num < min2) {min2 = num;}if (num > max1) {max3 = max2;max2 = max1;max1 = num;} else if (num > max2) {max3 = max2;max2 = num;} else if (num > max3) {max3 = num;}}return Math.max(min1 * min2 * max1, max1 * max2 * max3);}}
