这个题很是坑人·····最开始有冒泡排序,TLE,改成sort,一如既往的TLE。后来发现自己最开始的时候进行比较的思路是错误的。
后经人指点,发现最后进行统计是王道。故更换思路······原题地址:点击打开链接.
代码如下:
#include<stdio.h> #include<algorithm> long long b[2000001]; int main() { int i,j,n,m; scanf("%d",&m); while(m--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%lld",&b[i]); std::sort(b,b+n); int k=-9999,l=1;long long g; for(i=0;i<n-1;i++) { if(b[i]==b[i+1]) {l++;} else { if(l>k) {g=b[i];k=l;} l=1; } } printf("%lld\n",g); }return 0; } 错误代码如下: #include<stdio.h> #include<algorithm> struct bian { long long a; int b; }b[200001]; bool cmp(bian s1,bian s2) { return s1.b<s2.b; } int main() { int i,j,n,m; scanf("%d",&m); while(m--) { scanf("%d",&n); for(i=0;i<n;i++) { scanf("%lld",&b[i].a); for(j=0;j<i;j++) { if(b[j].a==b[i].a) {b[j].b++;i--;n--;}} } std::sort(b,b+n,cmp); printf("%d\n",b[n-1].a); }return 0; }
解决排序与统计问题的高效方法
244

被折叠的 条评论
为什么被折叠?



