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)函数快速解决这个问题。做法很简单,
- 使用Counter()方法将给定的元素列表转换为字典,将元素作为键,将它们的频率作为值。
- 现在遍历完整的字典并检查其频率遵循大于 (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