三個數乘積

最大乘積

給定一個無序數組,包含正數、負數和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();
     
     
}
}
發佈了16 篇原創文章 · 獲贊 0 · 訪問量 718
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章