笔试题找到数组中,三个数乘积最大的结果

xiaoxiao2021-02-28  80

   思路:先找到三个最大的数,求出乘积max1。再找两个最小的数,想乘后再乘以最大的数,得到乘积max2. 最终返回max1 max2的较大者

 public static int maxThree(int[] arr){

//a[0]不用 int[] a=new int[4]; a[1]=arr[0]; a[2]=arr[1]; a[3]=arr[2]; if(a[1]<a[3]){ int temp=a[1]; a[1]=a[3]; a[3]=temp; } if(a[2]<a[3]){ int temp=a[2]; a[2]=a[3]; a[3]=temp; } if(a[1]<a[2]){ int temp=a[1]; a[1]=a[2]; a[2]=temp; } for(int i=0;i<arr.length;i++){ if(arr[i]>a[3]){ if(arr[i]>a[2]){ a[3]=a[2]; if(arr[i]>a[1]){ a[2]=a[1]; a[1]=arr[i]; }else{ a[2]=arr[i]; } }else{   a[3]=a[i]; } } } //然后找到两个最小的数 int[] b={arr[0],arr[1]}; if(b[0]>b[1]){ int temp=b[0]; b[0]=b[1]; b[1]=temp; } for(int i=0;i<arr.length;i++){ if(arr[i]<b[1]){ if(arr[i]<b[0]){ b[0]=arr[i]; b[1]=b[0]; }else{ b[1]=arr[i]; } } } return Math.max(a[1]*a[2]*a[3], a[1]*b[0]*b[1]); }
转载请注明原文地址: https://www.6miu.com/read-45679.html

最新回复(0)