#T0086. 多数元素
0
多数元素
题目背景
质检员在流水线上抽检一批零件,每个零件都印有一个整数编号。质检员想知道:是否存在一种编号,在整批零件中出现的次数严格超过总数量的一半。如果存在,就把这个编号上报;如果不存在,则上报 NO。
题目描述
给定 个整数 。
如果某个整数在序列中出现的次数严格大于 ,请输出这个整数;否则输出 NO。
可以证明,满足条件的整数至多只有一个。
输入格式
第一行一个整数 。
第二行 个整数 。
输出格式
一行。
若存在出现次数严格大于 的数,输出该数;否则输出 NO(大写)。
样例输入1
7
2 2 1 3 2 2 5
样例输出1
2
样例输入2
6
4 4 2 2 3 3
样例输出2
NO
样例输入3(稍大,含负数与 0)
12
-5 7 -5 0 -5 -5 2 -5 -5 1 -5 -5
样例输出3
-5
样例解释3
出现 次,,输出 。
数据范围与约定
- 注意:出现恰好 次不算超过一半,例如 时出现 次应当输出
NO。
提示
可以先想最简单的计数做法;再思考能否只用 的额外空间完成——可以了解一下「摩尔投票」的思路:候选数与不同的数两两配对抵消,最后剩下的候选可能是答案,但必须再扫描一遍确认它的出现次数确实过半。
冀公网安备13098402000493号