最高頻的K個單詞 LintCode

2021-08-20 05:30:31 字數 884 閱讀 7315

描述

給乙個單詞列表,求出這個列表中出現頻次最高的k個單詞。

你需要按照單詞的詞頻排序後輸出,越高頻的詞排在越前面。如果兩個單詞出現的次數相同,則詞典序小的排在前面。

樣例 給出單詞列表:

[

"yes", "lint", "code",

"yes", "code", "baby",

"you", "baby", "chrome",

"safari", "lint", "code",

"body", "lint", "code"

]

如果 k = 3, 返回 [「code」, 「lint」, 「baby」]。

如果 k = 4, 返回 [「code」, 「lint」, 「baby」, 「yes」]。

挑戰 用 o(n log k)的時間和 o(n) 的額外空間完成。

思路 構建堆,元素

#ifndef c471_h

#define c471_h

#include

#include

#include

#include

#include

#include

using

namespace

std;

//出現次數越多越靠前,出現次數相同按字典序

struct cmp

else

return a.second>b.second;

}};class solution

//求堆頂的前k個值

for (int i = 0; i < k; ++i)

return res;

}};#endif

LintCode 471 最高頻的K個單詞

題目 給乙個單詞列表,求出這個列表中出現頻次最高的k個單詞。思路 本題並不難,主要需要重新實現乙個hashmap根據key值和value值排序的comparator介面即可。但hashmap並沒有比較器介面,所以需要把hashmap的entryset匯入乙個list中,呼叫collections.s...

前k個高頻單詞

題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞...

前K個高頻單詞

解題思路 static class mycomparator implements comparator override public intcompare string o1,string o2 o1 o1 o2返回 0 o1 o2返回0 count1 count2公升序排序 count2 co...