首页 > 字符串出现次数的TopK问题
头像 有名
发表于 2021-07-16 21:11:04
方法一 思路 题目要求找出出现次数前k的字符串,最为简单的就是直接遍历数组统计每个字符串出现的次数,接着再降序排序输出前k的字符串。 具体步骤 首先判断k值是否为0,若为0,则直接返回一个空的String二维数组; k值大于0时,通过哈希计算每个字符串出现的次数; 借助JDK的比较器Colle 展开全文
头像 子夜降晴空
发表于 2021-03-23 21:16:16
struct cmp { bool operator() (pair<string, int> &p1, pair<string, int> &p2) { return p1.second > p2.second || (p1.s 展开全文
头像 小猪部落
发表于 2021-01-20 00:56:36
Java, 使用自定义的比较器实现 import java.util.*; public class Solution { /** * return topK string * @param strings string字符串一维数组 strings * @ 展开全文
头像 Arthur118
发表于 2020-12-04 23:57:36
统计各个字符出现次数,使用Map 创建初始堆(大顶堆),定义出现次数大的字符串较大,出现次数相同是自然序较前的串较大 依次去K个堆顶元素并调整堆 import java.util.*; public class Solution { /** * return topK str 展开全文
头像 执子一白
发表于 2020-12-08 16:00:19
Top K 问题首先想到堆,这道题还好定制一个比较器 用 PriorityQueue 就可以了,不需要动态调整堆结构。所以不需要手写堆逻辑哈哈偷了个懒,其实建议还是自己实现一个堆比较扎实能加深一下印象。 import java.util.*; public class Solution { 展开全文
头像 棒棒糖🍭201906101800876
发表于 2021-10-11 13:02:39
NC97 字符串出现次数的TopK问题 描述 给定一个字符串数组,再给定整数 k ,请返回出现次数前k名的字符串和对应的次数。 返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。 对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值 展开全文
头像 猫头鹰啊猫头鹰
发表于 2021-07-14 19:43:55
善用stream流,大大减少代码量 import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; public class  展开全文
头像 牛客670572580号
发表于 2021-09-20 02:08:07
# # return topK string # @param strings string字符串一维数组 strings # @param k int整型 the k # @return string字符串二维数组 # class Solution: def topKstrings(sel 展开全文
头像 陈文泰
发表于 2021-08-09 10:46:32
看了一圈好像没有python的题解,这里补一个,搬运自:https://leetcode.com/problems/top-k-frequent-words/discuss/1383677/Python-O(nlogk)-using-priority-queue-and-magic-method。因 展开全文
头像 每天学习一点
发表于 2022-02-25 21:07:49
(1)使用map记录字符的出现次数; (2)使用小根堆保存前k的结果(满足要求时间复杂度nlogk的要求); 注意:定义堆的比较器,除了要考虑字符串出现次数值的大小,当出现次数相同时,还要比较字符串的字典序 public class Solution { /** * retur 展开全文
头像 小陆要懂云
发表于 2021-08-24 17:29:33
优先队列出队的是当前优先级最高的元素,我们要做的是把出现次数多的留下,所以比较器要以次数少为优先级高,其逻辑与默认的less行为相反 vector<vector<string> > topKstrings(vector<string>& strin 展开全文

等你来战

查看全部