Функция со средней сложностью o (n log n), чтобы подсчитать количество запросов, которые пользователь запрашивает большеJavascript

Форум по Javascript
Anonymous
Функция со средней сложностью o (n log n), чтобы подсчитать количество запросов, которые пользователь запрашивает больше

Сообщение Anonymous »

Я разрабатываю алгоритм для фильтрации и подсчета количества слов, которые пользователи запрашивают наиболее .

Код: Выделить всё

const queries = [
"weather today", "openai", "javascript arrays", "weather today",
"news", "javascript arrays", "open", "javascript arrays",
"recipe", "news", "openai", "weather today"
];
необходимо:
Средняя сложность O (n log n)
Моя функция пишет, но она не работает правильно :

Код: Выделить всё

function topKFrequent(queries, k) {
const freqMap = {};
for (const q of queries) {
freqMap[q] = (freqMap[q]) + 1;
}

const entries = Object.entries(freqMap);
entries.sort((a, b) => {
let countA = a[1], countB = b[1];
if (countA != countB) {
return countB - countA;
}
return a[0].localeCompare(b[0]);
});

return entries.slice(0, k).map(entry => entry[0]);
}
< /code>
с: < /p>
queries 
- массив строк поиска. - Количество самых популярных ключевых слов для возврата.
Я запускаю следующую командную консоль.log (topkfrequent (Queries, 2));
Это выходы [«Погода сегодня», «openai»] , и на самом деле я ожидал Сегодня "] , потому что" JavaScript Arrays " и" погода сегодня " оба появляются 3 раз, в то время как" openai " появляется ровно 2 раз.
Ожидаемый результат:

Код: Выделить всё

["javascript arrays", "weather today"]

Средняя сложность o (n log n)
thanks.

Подробнее здесь: https://stackoverflow.com/questions/796 ... queries-th

Вернуться в «Javascript»