← Назад к вопросам
Алгоритм: Топ-K частых элементов
1.6 Junior🔥 61 комментариев
Условие
Дан массив чисел.
Найдите K наиболее часто встречающихся элементов.
Реализуйте решение за O(n log k) с использованием heap.
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение: Топ-K частых элементов за O(n log k)
Задача
Найти K наиболее часто встречающихся элементов в массиве за время O(n log k) с использованием heap.
Основной подход: Min-Heap (O(n log k))
Алгоритм:
- Подсчитываем частоту каждого элемента с помощью Counter — O(n)
- Создаём мин-кучу размером K
- Итерируем по элементам с их частотами:
- Если в куче меньше K элементов: добавляем текущий
- Если куча полна и текущая частота больше минимальной в куче: заменяем минимум
- Результат: K элементов остаются в куче
Примеры
Анализ сложности
- Time: O(n log k) — n для подсчёта, m log k для операций с heap (m ≤ n уникальных)
- Space: O(n) для Counter + O(k) для heap
Альтернативные подходы
Max-Heap (O(n log n)): Меньше эффективен, но проще когда K близко к количеству уникальных элементов.
Bucket Sort (O(n)): Используем индекс = частота, получаем O(n) временно. Требует O(n) дополнительной памяти.
Практическое применение
- Анализ логов (топ ошибок)
- NLP (частые слова)
- Системы рекомендаций
- Обнаружение аномалий
Похожие вопросы
- Задача на доверительный интервал
- SQL: Найти второго по зарплате сотрудника
- Python: Реализовать логистическую регрессию с нуля
- Алгоритм: Найти общих предков в дереве
- SQL: Вывести название и цену для всех анализов
- Задача на вероятность: сумма двух костей
- A/B тест: Анализ результатов эксперимента
- SQL: Скользящее среднее дохода за 3 месяца
- Data Cleaning: Очистка датасета
- Product Case: Падение метрики
- SQL: Нарастающий итог продаж по месяцам
- Python: Реализовать линейную регрессию с нуля
- SQL: Удаление дубликатов без создания новой таблицы
- SQL: Retention пользователей по когортам
- Задача на распределение Пуассона
- Python: Реализовать k-means clustering
- Задача на вероятность с картами
- Алгоритм: Найти k ближайших точек
- Задача на вероятность с монетами
- SQL: Топ-5 продуктов по выручке