主页 > 互联网  > 

算法题—三个数的最大乘机


三个数的最大乘机

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

重点考察:线性扫描

排序法:

public static void main(String[] args) { System.out.println(sort(new int[]{1, 2, 3, 4, 5})); System.out.println(sort(new int[]{-5, -4, -3, -2, -1})); System.out.println(sort(new int[]{-3, -2, -1, 1, 2})); System.out.println(sort(new int[]{-3, 1, 2, 3, 4})); } public static int sort(int[] nums) { Arrays.sort(nums); int len = nums.length; return Math.max(nums[len - 1] * nums[len - 2] * nums[len - 3], nums[0] * nums[1] * nums[len - 1]); }

线性扫描:

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 x : nums) { if (x < min1) { min2 = min1; min1 = x; } else if (x < min2) { min2 = x; } if (x > max1) { max3 = max2; max2 = max1; max1 = x; } else if (x > max2) { max3 = max2; max2 = x; } else if (x > max3) { max3 = x; } } return Math.max(min1 * min2 * max1, max1 * max2 * max3); }

以 [-3, -5, 2, 1, 4] 为例:

标签:

算法题—三个数的最大乘机由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“算法题—三个数的最大乘机