题目描述
给定String类型的数组strArr,再给定整数k,请严格按照排名顺序打印 出次数前k名的字符串。
[要求]
如果strArr长度为N,时间复杂度请达到O(NlogK)
输出K行,每行有一个字符串和一个整数(字符串表示)。
你需要按照出现出现次数由大到小输出,若出现次数相同时字符串字典序较小的优先输出
示例1
输入
["1","2","3","4"],2
返回值
[["1","1"],["2","1"]]
示例2
输入
["1","1","2","3"],2
返回值
[["1","2"],["2","1"]]
【解析】
首先遍历strArr并统计字符串的词频,例如,strArr=[“a”,”b”,”b”,”a”,”c”],遍历后可以生成每种字符串及其相关词频的哈希表map:
哈希表中有多少信息,就建立多少个pair<string, int>对,并且依次放入堆中,具体过程为:
(1)建立一个大小为k的小根堆priority_