#P1533. 八股408数据结构训练:寻找出现次数大于数组长度一半的数
八股408数据结构训练:寻找出现次数大于数组长度一半的数
题目描述
给你一个长度为的数组,内有一个元素的个数大于数组总长度的一半。 例如,这个元素的个数为3大于数组长度的一半也就是2。 再比如,这个元素的个数为2大于数组长度的一半也就是1(对于奇数要向下取整). 现在你的任务是给你让你找到这个个数大于数组元素一半的数。
注意这个题在八股书上要求必须是的时间复杂度和空间复杂度,所以本题也是如此。
也就是说你不要想着排序然后找,这样的话时间复杂度是是会给卡掉的。
对于空间你也不要想着开什么map或者unordered_map,空间也是给卡的死死的,顶多就开一个记录的数组。
输入格式
第一行输入一个正整数代表数组的长度
接下来个数
输出格式
一行一个数代表答案
样例
4
1 2 2 2
2
3
1 2 2
2
4
2 2 1 2
2
提示
本题的输入非常的巨大,经过我的测试需要使用快速读入,请在你的代码内加入以下的快速读入,要不会读入超时。
inline long long read()
{
long long x=0,y=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') y=-1;c=getchar();}
while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*y;
}