这是过半数数字问题,由于条件给出最多的数字超过半数,所以使用不同数字相消可以快速得到答案
当然如果想不到,使用map<int,int>作为数字出现次数的记录也可以,最大的map数组不过800*600/2 = 240000,可以接受但是需要遍历所有map,更新最大数
#include<cstdio>
using namespace std;
int main(){
int count = 0;
int curNum;
int maxNum;
int m,n;
scanf("%d%d",&m,&n);
for(int i = 0;i<=n;i++ ){
for(int j = 0;j <= m;j++){
scanf("%d",&curNum);
if(count==0) maxNum = curNum;
if(maxNum == curNum){
count++;
}else{
count--;
}
}
}
printf("%d",maxNum);
return 0;
}