mode(BZOJ 2456)
2016-07-16 20:07
357 查看
Description
给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。Input
第1行一个正整数n。第2行n个正整数用空格隔开。
Output
一行一个正整数表示那个众数。Sample Input
53 2 3 1 3
Sample Output
3HINT
100%的数据,n<=500000,数列中每个数<=maxlongint。/* 因为众数的要求是超过n/2,所以应该设ans为众数,p为数量,每输入一个数, 若与众数相同,p++,否则与当前众数抵消。 */ #include<cstdio> using namespace std; int p,ans,n; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(x==ans)p++; else { p--; if(p<=0) { ans=x; p=1; } } } printf("%d",ans); return 0; }
View Code
相关文章推荐
- shell编程基础笔记
- Maven Package Compilation Error
- 10017---SpringMVC--RESTful SpringMVC CRUD
- Android 隐式意图激活另外一个Actitity
- [置顶] 关于我
- 可能返回 null 的 SQL 语句
- 基于深度学习的视频识别方法概览
- 精通CSS.DIV网页样式与布局(一)
- POJ-3169 Layout( 差分约束 )
- 【linux c】Linux c内存管理——你的数据放在哪_学习笔记_009
- BZOJ 3713
- & jobs fg Ctrl+z bg
- C随便练练手的题
- IntelliJ IDEA 缺少 javax 包 支持
- OpenGL学习笔记6:高级纹理知识
- HDU 1358 Period
- 个人总结之I2C总线协议
- HTML5地理定位实例
- Java NIO 学习(六)--Selector
- 关于xib文件和storyboard文件的那些事儿