#P20008. 徐阳识主 · 众数破军

徐阳识主 · 众数破军

徐阳识主 · 众数破军

题目背景

徐阳击败云剑宗护山大阵后,大殿中一片狼藉。废墟之中,一枚上古传承玉简幽幽发光——

"仙帝遗诏:新任宗主由全体弟子投票产生。若有人得票严格超过半数,即为天命所归,继任宗主。"

徐阳拾起玉简,神识探入,发现其中记录了 N 位弟子的投票情况。投票记录杂乱无章,需要快速识别出谁才是真正的众望所归。

"超过半数……有意思。"徐阳嘴角微扬,指尖在玉简上轻轻一划。

题目描述

给定 T 组数据,每组包含一个整数 N 和一个长度为 N 的整数数组 nums,表示 N 位弟子的投票。数组中保证一定存在一个多数元素,即某个数字出现的次数 严格大于 (N/2)

请找出这个多数元素。

输入格式

第一行一个整数 T,表示数据组数。

接下来对于每组数据:

  • 第一行一个整数 N,表示数组长度。
  • 第二行 N 个整数,以空格分隔,表示数组 nums。

输出格式

T 行,每行输出该组数据的多数元素。

样例

3
3
3 2 3
7
2 2 1 1 1 2 2
1
1
3
2
1

提示

你可以设计时间复杂度为 O(N)、空间复杂度为 O(1) 的算法吗?

(经典算法:Boyer-Moore 多数投票算法

数据范围

  • 1 ≤ T ≤ 4
  • 1 ≤ N ≤ 10^5
  • -10^9 ≤ nums[i] ≤ 10^9
  • 保证每个测试数据中一定存在一个严格超过半数的多数元素
  • 单组测试数据内所有 N 的总和不超过 10^5