Найдите элемент большинства в массивах Python

Чтобы найти элемент большинства в массиве с помощью Python, вы можете использовать несколько методов. Вот некоторые из них:

  1. Использование словаря. Перебирайте массив и используйте словарь, чтобы отслеживать частоту каждого элемента. Элемент с самой высокой частотой является элементом большинства.
def majority_element(arr):
    counts = {}
    for num in arr:
        counts[num] = counts.get(num, 0) + 1
    majority = max(counts, key=counts.get)
    return majority
# Example usage:
array = [1, 2, 2, 3, 2, 1, 2, 2, 2]
result = majority_element(array)
print(result)  # Output: 2
  1. Использование класса счетчика. Класс Counterиз модуля collectionsпредоставляет удобный способ подсчета элементов в итерации. Вы можете использовать его, чтобы найти элемент большинства.
from collections import Counter
def majority_element(arr):
    counts = Counter(arr)
    majority = max(counts, key=counts.get)
    return majority
# Example usage:
array = [1, 2, 2, 3, 2, 1, 2, 2, 2]
result = majority_element(array)
print(result)  # Output: 2
  1. Сортировка массива: отсортируйте массив в порядке возрастания и верните элемент с индексом len(arr)//2. Поскольку элемент большинства появляется более чем n/2раз, он всегда будет находиться по этому индексу.
def majority_element(arr):
    arr.sort()
    majority = arr[len(arr) // 2]
    return majority
# Example usage:
array = [1, 2, 2, 3, 2, 1, 2, 2, 2]
result = majority_element(array)
print(result)  # Output: 2
  1. Алгоритм голосования Бойера-Мура: этот алгоритм позволяет найти элемент большинства за линейное время и постоянную пространственную сложность.
def majority_element(arr):
    candidate = None
    count = 0
    for num in arr:
        if count == 0:
            candidate = num
            count = 1
        elif candidate == num:
            count += 1
        else:
            count -= 1
    return candidate
# Example usage:
array = [1, 2, 2, 3, 2, 1, 2, 2, 2]
result = majority_element(array)
print(result)  # Output: 2