千家信息网

怎么使用heap和map

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"怎么使用heap和map",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么使用heap和map"吧!Top K 问题是面试中非常常
千家信息网最后更新 2026年11月02日怎么使用heap和map

这篇文章主要讲解了"怎么使用heap和map",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么使用heap和map"吧!

Top K 问题是面试中非常常考的算法题。

Leetcode 上这两题大同小异,这里以第一题为例。

题意:
给一组词,统计出现频率最高的 k 个。
比如说 "I love leetcode, I love coding" 中频率最高的 2 个就是 I 和 love 了。

有同学觉得这题特别简单,但其实这题只是母题,它可以升级到系统设计层面来问:

在某电商网站上,过去的一小时内卖出的最多的 k 种货物。

我们先看算法层面:

思路:

统计下所有词的频率,然后按频率排序取最高的前 k 个呗。

细节:

用 HashMap 存放单词的频率,用 minHeap/maxHeap 来取前 k 个。

实现:

  1. 建一个 HashMap ,遍历整个数组,相应的把这个单词的出现次数 + 1.

这一步时间复杂度是 O(n).

  1. 用 size = k 的 minHeap 来存放结果,定义好题目中规定的比较顺序
    a. 首先按照出现的频率排序;
    b. 频率相同时,按字母顺序。

  2. 遍历这个 map,如果
    a. minHeap 里面的单词数还不到 k 个的时候就加进去;
    b. 或者遇到更高频的单词就把它替换掉。

时空复杂度分析:

第一步是 O(n),第三步是 nlog(k),所以加在一起时间复杂度是 O(nlogk).

用了一个额外的 heap 和 map,空间复杂度是 O(n).

代码:

class Solution {    public List topKFrequent(String[] words, int k) {        // Step 1        Map map = new HashMap<>();        for (String word : words) {            Integer count = map.getOrDefault(word, 0);            count++;            map.put(word, count);        }                // Step 2        PriorityQueue> minHeap = new PriorityQueue<>(k+1, new Comparator>() {            @Override            public int compare(Map.Entry e1, Map.Entry e2) {                if(e1.getValue() == e2.getValue()) {                    return e2.getKey().compareTo(e1.getKey());                }                return e1.getValue().compareTo(e2.getValue());            }        });                // Step 3        List res = new ArrayList<>();        for(Map.Entry entry : map.entrySet()) {            minHeap.offer(entry);            if(minHeap.size() > k) {                minHeap.poll();            }        }        while(!minHeap.isEmpty()) {            res.add(minHeap.poll().getKey());        }        Collections.reverse(res);        return res;    }}

感谢各位的阅读,以上就是"怎么使用heap和map"的内容了,经过本文的学习后,相信大家对怎么使用heap和map这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

频率 复杂 单词 复杂度 最高 学习 内容 就是 层面 思路 时间 算法 问题 顺序 a. b. 排序 统计 相同 大同小异 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技行业发展 贷财互联网科技 互联网科技视频素材 中国最先进互联网科技公司 互联网科技公司的市场部门 深圳市运趣互联网科技有限公司 科技与互联网的利与弊 青岛中康互联网医疗科技有限公司 天速互联网络科技有限公司 团飞科技与伯堂互联网服务平台 重庆互联网医院沙龙医盟信息科技 链环科技传统企业怎么转型互联网 佛山市翊博互联网络科技有限公司 工业互联网山东科技大学 每天都有哪些好的互联网科技 梅州GM互联网络科技有限公司 广州富喜互联网络科技 美国互联网科技公司 张召忠谈中国互联网科技 每日互联网科技新闻 互联网科技股 互联网科技公司电话 艾特科技互联网 易通互联网络科技有限公司 衡水科技产业互联网平台 米聚互联网科技南京有限公司排面 互联网方面的科技前沿 互联网高科技行业有哪些企业 同城互联网络科技 互联网科技大佬云集
0