关注
// //写得很乱,三个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; } } }
查看原帖
点赞 评论
牛客热帖
更多
正在热议
更多
# 哪些公司开提前批了? #
24537次浏览 255人参与
# 你今年的平均薪资是多少? #
133878次浏览 685人参与
# 风评不好的公司,你会去吗? #
57772次浏览 418人参与
# 实习如何「偷」产出? #
48627次浏览 1270人参与
# 正在春招的你,也参与了去年秋招吗? #
312628次浏览 2528人参与
# 除了主业以外,你还有哪些其他收入? #
11434次浏览 196人参与
# 互联网公司评价 #
401119次浏览 3836人参与
# 你最满意的offer薪资是哪家公司? #
32983次浏览 176人参与
# 节后第一天上班,我的精神状态 #
13388次浏览 117人参与
# 不卡学历的大厂有哪些? #
27238次浏览 217人参与
# 校招阶段,学历VS技术哪个更重要? #
16703次浏览 182人参与
# 职场新人体验 #
23982次浏览 231人参与
# 签约/解约注意事项 #
696851次浏览 4068人参与
# 应届生初入职场,求建议 #
229686次浏览 2642人参与
# 你投递的公司有几家约面了? #
108780次浏览 778人参与
# 腾讯音乐求职进展汇总 #
97997次浏览 570人参与
# 校园里的破防时刻 #
10678次浏览 122人参与
# 硬件人求职现状 #
434469次浏览 4539人参与
# 正在实习的碎碎念 #
1454303次浏览 13469人参与
# 宁德时代求职进展汇总 #
122702次浏览 650人参与