Программа курса:
Разбор задачи: (K) наиболее часто встречающихся элементов
Предложенный нами код решения:
def topKFrequent(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: List[int]
"""
from collections import Counter as ct
return [k for (k,v) in ct(nums).most_common(k)] 1. Объявление функции
def topKFrequent(self, nums, k):
Здесь объявляется функция topKFrequent, которая принимает два аргумента:
nums: список целых чисел, в котором нужно найти наиболее часто встречающиеся элементы.k: целое число, указывающее количество элементов, которые нужно вернуть.
Назначение функции: возвращать список из k наиболее часто встречающихся чисел.
2. Импорт модуля Counter
from collections import Counter as ct
Функция использует класс Counter из модуля collections.
Что делает Counter:
Counterпредназначен для подсчета количества вхождений каждого элемента в коллекции.- Он создает словарь, где ключи — это уникальные элементы из коллекции, а значения — количество их вхождений.
Пример использования Counter:
nums = [1, 1, 1, 2, 2, 3]
count = Counter(nums)
# count = {1: 3, 2: 2, 3: 1}
3. Использование метода most_common
ct(nums).most_common(k)
Метод most_common у объекта Counter возвращает список кортежей, где каждый кортеж состоит из элемента и его частоты. Список отсортирован по убыванию частоты.
Пример:
nums = [1, 1, 1, 2, 2, 3]
count = Counter(nums).most_common(2)
# count = [(1, 3), (2, 2)]
В данном случае most_common(k) возвращает первые k самых частых элементов.
4. Формирование результата
return [k for (k, v) in ct(nums).most_common(k)]
Используется генератор списка для извлечения только самих элементов из результата most_common.
- Каждый элемент результата
most_common— это кортеж(элемент, частота). - В генераторе происходит выборка первого элемента
(k)из каждого кортежа.
Пример:
nums = [1, 1, 1, 2, 2, 3]
result = [k for (k, v) in Counter(nums).most_common(2)]
# result = [1, 2]
Итоговое поведение
- Считается количество вхождений всех элементов с помощью
Counter. - Выбираются
kсамых частых элементов черезmost_common(k). - Формируется список, содержащий только эти элементы.
Преимущества подхода
- Использование
Counterделает подсчет частот интуитивно понятным и лаконичным. - Метод
most_commonавтоматически сортирует элементы и возвращает их в нужном порядке. - Генератор списка обеспечивает компактность кода.
Пример работы
Входные данные:
nums = [1, 1, 1, 2, 2, 3]
k = 2
Код выполнения:
Counter(nums)вернет:{1: 3, 2: 2, 3: 1}Counter(nums).most_common(2)вернет:[(1, 3), (2, 2)]- Генератор списка извлечет элементы:
[1, 2]
Выходные данные: [1, 2]
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии