三个数乘积

最大乘积

给定一个无序数组,包含正数、负数和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();
     
     
}
}
发布了38 篇原创文章 · 获赞 0 · 访问量 1153

猜你喜欢

转载自blog.csdn.net/weixin_45489155/article/details/103001062