Ignatius and the Princess IV 

先搬中文

Descriptions:
 
给你n个数字,你需要找出出现至少(n+1)/2次的数字 现在需要你找出这个数字是多少?
Input

本题包含多组数据,请处理到EOF:
每组数据包含两行。
第一行一个数字N(1<=N<=999999) ,保证N为奇数。
第二行为N个用空格隔开的整数。

Output

对于每组数据,输出一行,表示要求找到的那个数

Sample Input

5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5 5
7
1 1 1 1 1 1 1

Sample Output

3
5
1

题目链接:

https://vjudge.net/problem/HDU-1029

找出数列里面出现次数多于n/2的的元素

既然次数大于n/2,那么例如3、2、3、1、3、2、3

  1. 去掉3    2
  2. 去掉3    2
  3. 去掉3    1
  4. 还剩一个3

由此可得我们按照序列一次扫描,把第一个数字x赋值给ans,计数器cnt=0

若是后来数字x与ans相同,则cnt++,否则cnt-- 若cnt为0,则重新找(不用倒回开头)以此循即可

AC代码

#include <bits/stdc++.h>
#define Mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x, y) memset(x, y, sizeof(x))
#define Maxn 1000
using namespace std;
int main()
{
int n,x,ans,cnt;
while(cin>>n)
{
cnt=;
for(int i=; i<n; i++)//存数
{
cin>>x;
if(cnt==)//计数器为0,重新计数
{
ans=x;
cnt=;
}
else
{
if(ans==x)//相同,计数器+1
cnt++;
else//不同-1
cnt--;
}
}
cout<<ans<<endl;
}
return ;
}
 
 

最新文章

  1. Java用户线程和守护线程
  2. TCP协议中的三次握手和四次挥手
  3. google大赛 入围赛250分真题
  4. Mac 切换Windows 使用虚拟机, 不推荐双系统
  5. Spring依赖注入 --- 简单使用说明
  6. java多线程之停止线程
  7. Number Sequence ----HDOJ 1711
  8. WMI概述
  9. Android性能优化学习
  10. Egret及Node.js的安装部署
  11. LintCode 推断一个二叉树树是否是还有一个二叉树的子书
  12. Tempdb怎么会成为性能瓶颈
  13. (一个)AngularJS获取贴纸Hello World
  14. 浏览器扩展系列————给MSTHML添加内置脚本对象【包括自定义事件】
  15. 深入理解PHP对象注入
  16. Java课程设计-定时器
  17. df 命令详解
  18. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现
  19. 20160221.CCPP体系详解(0031天)
  20. SpringBoot集成rabbitmq(二)

热门文章

  1. 我的C++开发工具链
  2. 个人第四次作业Alpha2版本测试~顾毓
  3. Python PE8编程规范
  4. HTTP核心模块(HTTP Core)
  5. SonarQube代码管理
  6. Matlab 与 c++对txt 文档的读写格式
  7. vue项目使用keep-alive
  8. asp.net core 2.2升到3.1遇到的问题小记
  9. Nginx 配置访问本地目录
  10. DOCKER 学习笔记9 Kubernetes (K8s) 生产级容器编排 上