📜  Python计数器 |多数元素

📅  最后修改于: 2022-05-13 01:54:39.624000             🧑  作者: Mango

Python计数器 |多数元素

多数元素:大小为 n 的数组 A[] 中的多数元素是出现超过 n/2 次的元素(因此最多有一个这样的元素)。

编写一个函数,它接受一个数组并发出多数元素(如果存在),否则打印 NONE,如下所示:

例子:

Input : 3 3 4 2 4 4 2 4 4
Output : 4 

Input : 3 3 4 2 4 4 2 4
Output : NONE

我们有针对此问题的现有解决方案,请参阅 Majority Element 链接。我们可以在Python中使用 Counter(iterable)函数快速解决这个问题。做法很简单,

  1. 使用Counter()方法将给定的元素列表转换为字典,将元素作为键,将它们的频率作为值。
  2. 现在遍历完整的字典并检查其频率遵循大于 (n/2) 的条件的元素,其中 n 是列表的大小。该元素将是多数元素。
# Function to find majority element
from collections import Counter
  
def majority(arr):
  
    # convert array into dictionary
    freqDict = Counter(arr)
  
    # traverse dictionary and check majority element
    size = len(arr)
    for (key,val) in freqDict.items():
         if (val > (size/2)):
             print(key)
             return
    print('None')
  
# Driver program
if __name__ == "__main__":
    arr = [3,3,4,2,4,4,2,4,4] 
    majority(arr)

输出:

4