第一种排序:如果将数组 array 中的所有元素按照单调递增或单调递减的顺序排序,那么下标为 n/2 的元素(下标从 0 开始)一定是众数。
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
a = sorted(numbers)
if a.count(a[len(numbers)//2]) > len(numbers)/2:
return a[len(numbers)//2]
第二种哈希表统计
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
if not numbers:
return None
if len(numbers) == 1:
return numbers[0]
# 哈希表
set = {}
for i in numbers:
if i not in set:
set[i] = 1
else:
set[i] += 1
if set[i] > (len(numbers) / 2):
return i
return None