数组中出现次数超过一半的元素

已关闭
dadingPython / C++入场费 2 金币0 次提交

题目描述

给定一个长度为 n 的整数数组,找出其中出现次数超过 ⌊n/2⌋ 的元素。

你可以假设数组非空,且一定存在这样的元素。

要求时间复杂度 O(n),空间复杂度 O(1)。

输入格式

第一行一个整数 n,表示数组长度(1 ≤ n ≤ 10^6) 第二行 n 个整数,表示数组元素(-10^9 ≤ ai ≤ 10^9)

输出格式

一行,一个整数,表示出现次数超过一半的元素

输入输出样例

样例 1

输入:

5
3 2 3 1 3

输出:

3

说明/提示

考虑 Boyer-Moore 投票算法