我就想知道 拼多多第一道题你们是怎么ac的啊

我最终也只有22.22%。。。怎么改代码我觉得我时间复杂度都没有问题啊。。。求求大神附个代码看看#Java工程师#
全部评论
我也是22.22 这算是一种官方嘲讽吗....
点赞 回复 分享
发布于 2017-08-01 22:10
我python写了一百多行的if else23333
点赞 回复 分享
发布于 2017-08-01 22:10
只需要保留最小的两个负数,最大的三个正数。 看这三个正数的乘积,还是两个负数与最大正数的乘积
点赞 回复 分享
发布于 2017-08-01 22:02
int 变成 long long int成功AC
点赞 回复 分享
发布于 2017-08-01 22:01
同样只有22.22%
点赞 回复 分享
发布于 2017-08-01 21:52
看了一圈,发现全是一帮学霸在探讨,吾等学渣先行退下
点赞 回复 分享
发布于 2017-08-02 11:11
都考虑到了 也用了long long 44.4% 醉…
点赞 回复 分享
发布于 2017-08-01 23:55
long long。。。都怪最后那个网站设计题,先看的这题,看完直接懵。。连long long都没想起来。。。。扑街。。
点赞 回复 分享
发布于 2017-08-01 22:25
这个一开始我是33.3%,后来要考虑到俩个负数一个正数的情况就是100%了。
点赞 回复 分享
发布于 2017-08-01 22:24
注意long long 就行了。。坑了半天
点赞 回复 分享
发布于 2017-08-01 22:24
实习加班走不开没做,考虑跑路了。。。
点赞 回复 分享
发布于 2017-08-01 22:22
擦,竟然用longlong
点赞 回复 分享
发布于 2017-08-01 22:20
找到三个最大的数,再找到两个最小的数,输出   max(三个最大的数的乘积,  最大数与两个最小数),结果用biginteger表示就ac了,不过据说long long就A了 XD
点赞 回复 分享
发布于 2017-08-01 22:09
学到了学到了  以后要用long  是说写出来怎么可能错
点赞 回复 分享
发布于 2017-08-01 22:08
// //写得很乱,三个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;         }     }                }
点赞 回复 分享
发布于 2017-08-01 22:05
找最小两个数和最大数的乘积和最大三个数的乘积中的大值,输入直接用long可以过
点赞 回复 分享
发布于 2017-08-01 22:04
他说有、正数、负数、0是指的是一组数中一定包含这三种么?????????
点赞 回复 分享
发布于 2017-08-01 22:04
最后一题有人知道怎么做吗,求给个思路,100%100%100%10%很难受
点赞 回复 分享
发布于 2017-08-01 22:04
太多坑了,输入2个负数2个正数1个0的情况,输入全是负数的情况,两个负数最大乘积和两个正数最大乘积相等的情况...一堆堆,最终只有88.89的通过率
点赞 回复 分享
发布于 2017-08-01 22:04
把int换成double.....就AC了............第一题卡了超级久
点赞 回复 分享
发布于 2017-08-01 22:03

相关推荐

不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务