这个题很是坑人·····最开始有冒泡排序,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;
}