Самые часто встречающиеся элементы

Дан целочисленный массив nums и число k. Верните k наиболее часто встречающихся элементов массива. Порядок элементов в возвращаемом массиве не важен.

Пример 1:

Input: nums = [1,2,2,3,3,3], k = 2 Output: [3,2]

Пример 2:

Input: nums = [1], k = 1 Output: [1]

Пример 3:

Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2]

Рекомендуемая временная и пространственная сложность

Оптимальное решение имеет временную сложность O(n) и пространственную сложность O(n), где n — размер входного массива.


Подсказка 1

Первый шаг - подсчитать частоту каждого элемента. Какую структуру данных лучше использовать для этого?


Подсказка 2

После подсчета частот, как эффективно найти k наиболее часто встречающихся элементов? Подумайте о структурах данных, которые хорошо работают с поиском top-k элементов.


Подсказка 3

Вместо использования сортировки или кучи, подумайте о методе Bucket Sort. Так как частота элемента не может превышать размер массива, мы можем использовать массив "корзин", где индекс - это частота.

Эта задача проверяет навыки эффективной работы с частотным анализом элементов массива и их сортировкой. Она помогает освоить различные структуры данных (хеш-таблицы, кучи) и алгоритмы (Bucket Sort), а также понять компромиссы между разными подходами к решению. Задача развивает умение оптимизировать временную и пространственную сложность алгоритмов при работе с большими наборами данных.

Входные параметры :

[1,2,2,3,3,3], 2

Ожидаемый результат

[3,2]