У меня есть:
words = ["i", "love", "leet", "i", "love", "code"]
k = 3
"i"
и "love"
появляются дважды, но "leet"
и "code"
появляются один раз.Я хочу:
["i", "love", "code"]
вместо "leet"
.Этот код:
words.group_by(&:itself).sort_by {|_, s| -s.length}.first(k).map(&:first)
отобразит:
["i", "love", "leet"]
Какой хороший способ решить эту проблему?
Это можно решить с помощью кучи, но Rubyне поддерживает кучи.Есть ли рекомендации?Я хотел бы сделать это без использования драгоценного камня, чтобы я мог демо-версию на сайте онлайн-тестирования кода.
========================================================================= k
для частоты Так что этот вопрос для поиска k частотных слов в массиве слов.когда k - 3 вопроса, я выбираю code
, а не leet
.Я хочу отсортировать по алфавиту, когда есть слова с одинаковой частотой, поэтому я могу выбрать первое.