多数投票算法(Boyer-Moore Algorithm)
Leet Code 第169题
问题描述
给定一个无序数组,有n个元素,找出其中的一个多数元素,多数元素出现的次数大于⌊ n/2 ⌋,注意数组中也可能不存在多数元素。
一般解法
先对数组排序,然后取中间位置的元素,再对数据扫描一趟来判断此元素是否为多数元素。时间复杂度O(nlog(n)),空间复杂度O(1)。
使用一个hash表,对数组进行一趟扫描统计每个元素出现的次数,即可得到多数元素。时间复杂度O(n),空间复杂度O(n)。