算次数

题目:
蒜头君想知道在他笔记本上写的 n个整数中出现次数最多的数是多少,如果有多个数出现次数并列最多,他想知道数最小的那个。

Input
第一行,一个正整数 n第二行,n个整数 ai,表示蒜头君的笔记本上的整数

Output
输出一行,包含一个整数,表示答案。

Sample Input
3
-1 -1 2

Sample Output
-1

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,a[1008611],x,b[1008611],num,t=0,t1=0,max,min;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&x);
		if(x>=0)
		{
			a[x]++;//正的; 
		}else
		{
			num=abs(x);//负数转化成正的; 
			b[num]++;
		}
	}
	for(int i=0;i<1000005;i++)
	{
		if(a[i]>t)//找出正数里出现次数最多的; 
		{
			max=i;
			t=a[i];
		}
	}
	for(int j=1000005;j>0;j--)
	{
		if(b[j]>t1)//找出负数里出现次数最多的; 
		{
			min=j;
			t1=b[j];
		}
	}
	if(t1>=t)//题意如果次数一样输出最小的 
	{
		printf("-%d",min);//之前负数为了方便比较转换成了正数,所以这里记得加负号; 
	}else
	{
		printf("%d",max);
	}
	return 0;
}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页