// //写得很乱,三个for循环是可以合并的,但是当时忘记改了....时间复杂度O(n),空间复杂度O(1) // #include <stdio.h> #include <iostream> #include <vector> #include <deque> #include <set> #include <stack> #include <map> #include<math.h> #include<algorithm> #include<string> #include <queue> using namespace std; int main(){     int len;     while(cin>>len){         vector<long long>num(len,0);         bool f=false;         for(int i=0;i<len;i++)         {    cin>>num[i];             if(num[i]==0)                 f=true;                                   }         if(len<3)             cout<<-1<<endl;         else{             long long max1=-99999999;long long max2=-999999999;long long max3=-999999999;             long long min1=10000000;long long min2=100000000;long long min3=100000000;             for(int i=0;i<len;i++){                 if(num[i]>max1)                 {   max3=max2;                     max2=max1;                     max1=num[i];                                      }                 else if(num[i]>max2)                 {                     max3=max2;                     max2=num[i];                 }                 else if(num[i]>max3)                 {                     max3=num[i];                                      }             }  // 遍历一遍求出最大的三个数                          for(int i=0;i<len;i++){                 if(num[i]<min1)                 {   min3=min2;                     min2=min1;                     min1=num[i];                                      }                 else if(num[i]<min2)                 {                     min3=min2;                     min2=num[i];                 }                 else if(num[i]<min3)                 {                     min3=num[i];                                      }             }//遍历一遍,求出最小的三个数                      long long res=-999999999;             res=max(res,min1*min2*min3);             res=max(res,min1*min2*max1);             res=max(res,max1*max2*max3);             res=max(res,max1*max2*min1);//四种情况求最大值             if(f&&res<0)                 res=0;//考虑是不是有0存在且结果为负数             cout<<res<<endl;         }     }                }
点赞 评论

相关推荐

不愿透露姓名的神秘牛友
07-21 13:38
8月实习会变多吗现在还没找到实习该怎么办...回复的hr好少
码农索隆:3-4月就要开始找,基本上6月份就发offer,7月初已经开始暑期实习了。
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务