当前位置:首页 >> 编程语言 >> 【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map),苹果核战记续篇

【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map),苹果核战记续篇

cpugpu芯片开发光刻机 编程语言 6
文件名:【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map),苹果核战记续篇 【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map)

题干:

描述

 

给你一个数组,输出里面出现超过1/2的元素。保证有且只有一个解。

输入

第一行是一个整数,表示测试数据的组数 n,n < 1000万 之后每一行都是一个整数。

输出

输出出现超过1/2的那个数字。

输入样例 1 

511123

输出样例 1

1

提示

不要使用 cin,测试数据很大。将时间复杂度降到 O(n)

解题报告:

 

AC代码:(三种)

#include<cstdio>#include<queue>#include<cstring>#include<cmath>#include<map>#include<iostream>#include<algorithm>#define ll long long#pragma GCC optimize(2)const ll mod = 1e9+7;using namespace std;int n;ll a[10000000 +5];int main(){int n,res;ll tmp;scanf("%d",&n);res = n/2+1;for(int i = 1; i<=n; i++) {scanf("%lld",&a[i]);}sort(a+1,a+n+1);printf("%lld",a[res]);return 0 ;}//#include<cstdio>//#include<queue>//#include<cstring>//#include<cmath>//#include<map>//#include<iostream>//#include<algorithm>//#define ll long long//const ll mod = 1e9+7;//using namespace std;//int n;//ll a[10000000 +5];//map<ll,int> mp;//int main()//{//int n,res;//ll tmp;//scanf("%d",&n);//res = n/2+1;//for(int i = 1; i<=n; i++) {//scanf("%lld",&tmp);//mp[tmp]++;//}//map<ll,int> :: iterator it;//for(it = mp.begin(); it!=mp.end(); ++it) {//if(it->second >= res) printf("%lld\n",it->first);//}////return 0 ;//}////#include<bits/stdc++.h>//using namespace std;//int main()//{// int n;// scanf("%d",&n);// int temp,time=0,a;// for(int i=0;i<n;i++)// {// scanf("%d",&a);// if(time==0)// {// time=1;// temp=a;// }// else if(temp==a)// {// time++;// }// else// {// time--;// }// }// printf("%d\n",temp);//}

 

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2026年1月    »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接