关注
// //写得很乱,三个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-23 18:28
门头沟学院 机械工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 工作中哪个瞬间让你想离职 #
28566次浏览 200人参与
# 在职场上,你最讨厌什么样的同事 #
16527次浏览 168人参与
# 选了这个offer,你有没有后悔? #
593266次浏览 4031人参与
# 机械人,秋招第一次笔试的企业是哪家? #
41214次浏览 327人参与
# 小米硬件提前批进度交流 #
171195次浏览 1528人参与
# 机械求职避坑tips #
53542次浏览 381人参与
# 哪些公司校招卡第一学历 #
76108次浏览 315人参与
# 担心入职之后被发现很菜怎么办 #
139897次浏览 810人参与
# 入职以后才知道的校招谎言 #
89133次浏览 588人参与
# 职场常用语录大全 #
4269次浏览 32人参与
# Offer比较,你最看重什么? #
192273次浏览 1310人参与
# 华子oc时间线 #
1245282次浏览 6487人参与
# 哪些公司开提前批了? #
30595次浏览 278人参与
# 风评不好的公司,你会去吗? #
66560次浏览 468人参与
# 两会劳动法放大招 #
76739次浏览 692人参与
# 应届生初入职场,求建议 #
230464次浏览 2651人参与
# 实习如何「偷」产出? #
57423次浏览 1408人参与
# 不卡学历的大厂有哪些? #
33865次浏览 262人参与
# 怎么防止在试用期被辞退 #
129256次浏览 927人参与
# 校招阶段,学历VS技术哪个更重要? #
20107次浏览 210人参与