欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三个数乘积

程序员文章站 2024-03-16 17:36:40
...

最大乘积

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

package a;
import java.util.*;
public class Main {
 public static void main(String [] args) {
 Scanner input=new Scanner(System.in);
   long max=0;
    long max1=0;
    long max2=0;
    long max3=0;
    long  min1=0;
    long  min2=0;
 long[] a=new long[input.nextInt()];
 if(a.length>=3)
 {
  for(int i=0;i<a.length;i++)
 {
 a[i]=input.nextLong();
  if(max1<a[i]) 
  {
   max3=max2;
   max2=max1;
   max1=a[i];
     }
  else if(max2<a[i])
  {
     max3=max2;
     max2=a[i];
  }
  else if(max3<a[i])
     max3=a[i];
  if(min1>a[i])
  { 
   min2=min1;
   min1=a[i];
   }
  else if(min2>a[i])
   min2=a[i];
 }
 max=Math.max(max1*max2*max3,max1*min1*min2);
  System.out.println(max);
  
 }
  
     input.close();
     
     
}
}