博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
week12-动态规划(三)A-必做题-1
阅读量:3950 次
发布时间:2019-05-24

本文共 991 字,大约阅读时间需要 3 分钟。

A - 必做题 - 1

给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少?

Input

本题包含多组数据:每组数据包含两行。

第一行一个数字N(1<=N<=999999) ,保证N为奇数。
第二行为N个用空格隔开的整数。
数据以EOF结束。

Output

对于每一组数据,你需要输出你找到的唯一的数。

Sample Input

51 3 2 3 3111 1 1 1 1 5 5 5 5 5 571 1 1 1 1 1 1

Sample Output

3
5
1

解题思路

本题要找到出现了(n+1)/2次及以上的数,那么这个数一定是唯一的,所以可以先升序排序。然后计算相同的数的个数,如果那个数的个数超过了(n+1)/2,那么遍历结束,输出那个数。

Codes

#include
#include
#include
#include
using namespace std;const int maxn = 1e6 + 10;int n,a[maxn],num;int main(){
while (scanf("%d",&n) != EOF){
int tag = 0; memset(a, 0, sizeof(a)); for (int i = 1; i <= n;i++) cin >> a[i]; num = (n + 1) / 2; sort(a+1, a + n+1, less
()); for (int i = 1; i <= n;i++){
if(a[i]!=a[i+1]){
tag = i-tag; if(tag>=num){
cout << a[i] << endl; break; } } } } return 0;}

转载地址:http://odwzi.baihongyu.com/

你可能感兴趣的文章
ubuntu flash 文字乱码解决方案
查看>>
在ubuntu中运行exe文件
查看>>
ubuntu安装命令
查看>>
和上司沟通必备8个黄金句
查看>>
联系查看两张卡的未接电话记录
查看>>
Python 3 之多线程研究
查看>>
APP第三方登录实现步骤
查看>>
KVO & KVC 比较 - KVC
查看>>
iOS-tableView联动
查看>>
iOS--Masonry解决 tableViewCell 重用时约束冲突
查看>>
git 与 svn 的主要区别!
查看>>
iOS-截屏,从相册选择图片,制作磨砂效果图片
查看>>
iOS-截取字符串中两个指定字符串中间的字符串
查看>>
数据库-数据库操作(使用FMDB)
查看>>
FMDB介绍以及在 swift 中的数据库操作
查看>>
iOS运行时机制(附Demo演练)
查看>>
宽字符串输出问题
查看>>
将整数转换为宽字符串
查看>>
在类中定义enum实现整数常量功能
查看>>
suse11通过安装最新内核可以上网的经验
查看>>