題目**
題目描述
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。
返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。
示例 1:
輸入: [「i」, 「love」, 「leetcode」, 「i」, 「love」, 「coding」], k = 2
輸出: [「i」, 「love」]
解析: 「i」 和 「love」 為出現次數最多的兩個單詞,均為2次。
注意,按字母順序 「i」 在 「love」 之前。
示例 2:
輸入: [「the」, 「day」, 「is」, 「sunny」, 「the」, 「the」, 「the」, 「sunny」, 「is」, 「is」], k = 4
輸出: [「the」, 「is」, 「sunny」, 「day」]
解析: 「the」, 「is」, 「sunny」 和 「day」 是出現次數最多的四個單詞,
出現次數依次為 4, 3, 2 和 1 次。
注意:假定 k 總為有效值, 1 ≤ k ≤ 集合元素數。
輸入的單詞均由小寫字母組成。
小知識點
對於list:void add(int index, e element)
可以在插入操作過程中指定插入的位置,此時,會自動將當前位置及只有的元素後移進行插入
解題思路
使用小根堆
**
class
solution
priorityqueue
> pq =
newpriorityqueue
<
>
((a,b)
-> a.
getvalue()
== b.
getvalue()
? b.
getkey()
.compareto
(a.getkey()
): a.
getvalue()
- b.
getvalue()
);for(map.entry
entry : map.
entryset()
)while
(!pq.
isempty()
) result.
add(
0, pq.
poll()
.getkey()
);return result;
}}
LeetCode692題 前K個高頻單詞
題目描述 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個...
LeetCode 692 前K個高頻單詞
題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞...
前K個高頻單詞 leetcode 692
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞,均為...