2456: mode
Time Limit: 1 Sec Memory Limit: 1 MBSubmit: 3618 Solved: 1519
[ Submit][ Status][ Discuss]
Description
给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。
Input
第1行一个正整数n。
第2行n个正整数用空格隔开。
Output
一行一个正整数表示那个众数。
Sample Input
5
3 2 3 1 3
3 2 3 1 3
Sample Output
3
#include<stdio.h>
int main()
{
int a,sum,ans,n;
while(~scanf("%d",&n))
{
ans=1;
scanf("%d",&sum);
n--;
while(n--)
{
scanf("%d",&a);
if(a==sum)
ans++;
else
{
ans--;
if(ans==0)
{
sum=a;
ans=1;
}
}
}
printf("%d\n",sum);
}
return 0;
}
int main()
{
int a,sum,ans,n;
while(~scanf("%d",&n))
{
ans=1;
scanf("%d",&sum);
n--;
while(n--)
{
scanf("%d",&a);
if(a==sum)
ans++;
else
{
ans--;
if(ans==0)
{
sum=a;
ans=1;
}
}
}
printf("%d\n",sum);
}
return 0;
}