учитывая поток слов неизвестного размера, мне нужно найти k наиболее часто встречающихся слов в любой момент времени, и программа должна иметь возможность работать в течение длительного времени.
Я видел сообщениеэто похоже на решение, о котором я думаю
Самый эффективный способ найти наиболее часто встречающиеся слова в большой последовательности слов
Как найти наиболее частый элемент впоток чисел с добавлением и удалением разрешен
, но моя проблема в том, как я решаю проблему нехватки памяти
в сообщениях, они не упоминают эту проблему.
, поэтому я 'Я планирую сохранить хэш с ключом в качестве слова и значение в качестве частоты слов и минимальную кучу размера k, в которой будут храниться наиболее часто встречающиеся слова
, и для каждого слова я буду увеличивать количество в хэше и проверятьесли я могу ввести его в кучу
, проблема в том, что программа должна работать долго, поэтому есть вероятность, что я получу разные слова с небольшой частотой
, и янужно сохранитьих в хэше на всякий случай, если частота будет увеличиваться позже в потоке
, и это создаст проблему с памятью, потому что со временем хеш может стать действительно большим
Интересно, будет ли единственным решением удалить определенноеслова
(но это изменит количество)
Я не уверен, как справиться с этим, любое предложение?