竞赛题笔记(2)

it2025-04-09  18

这是一道求众数的题目 我自己想的代码(虽然因为超时没有通过,至少答案是对的,我好菜T-T)

#include <iostream> using namespace std; int a[1000000],b[1000000]; int main() { int num,ans; cin>>num; for(int i=1;i<=num;i++)//录入数据的个数 { cin>>a[i]; } for(int i=0;i<num;i++)//使用双循环方法,这也是超时的原因 { for(int j=i+1;j<=num;j++)//将第一个循环作为左指针,第二个循环作为右指针,左右指针开始对比 { if(a[i]==a[j])//如果左右指针内容相同,那么在专门储存出现次数的数组中+1 { b[i]++; } } } int max=b[0]; for(int i=1;i<=num;i++) { if(b[i]>max) { max=b[i]; ans=i;//让电脑记住最大的是数组中的第几个 } } cout<<a[ans]<<endl;//因为数组a和b中的顺序相对应,所以输出a[ans]即可 return 0; }
最新回复(0)