三個數的最大乘積
阿新 • • 發佈:2021-07-29
整型陣列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})); } public 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 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; }if (x>max1){ max3=x; } } return Math.max(min1*min2*max1,max1*max2*max3); } }