力扣347. 前 K 个高频元素

在这里插入图片描述
思路:记录元素出现的次数用map;
要维护前k个元素,不至于把所有元素都排序再取前k个,而是新建一个堆,用小根堆存放前k个最大的数。
为什么是小根堆?因为堆每次出数据时只出堆顶,每次把当前最小的堆顶排出去
,把更大的换进来,到最后只会剩下几个最大的元素。
堆的排序复杂度是 log(K),所以整体是 n*long(K);

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
       Map<Integer,Integer> map = new HashMap<>();
       //元素和次数 放入map
       for(int i : nums){
        map.put(i, map.getOrDefault(i,0)+1);
       }
		//int[] 里面只放2两个值k-v,用来代替map的元素
       PriorityQueue<int[]> xiaoDui = new PriorityQueue<>((nums1,nums2)->nums1[1]-nums2[1]);//小根堆

		//遍历map里的元素,维护一个K个元素的小根堆,里面放的是大数
       for(Map.Entry<Integer,Integer> item : map.entrySet()) {
        if(xiaoDui.size()<k){
            xiaoDui.add(new int[] {item.getKey(),item.getValue()});
        }else{
        //堆顶元素小时,出堆顶,入新元素
            if(xiaoDui.peek()[1]<item.getValue()) {
                xiaoDui.poll();
                xiaoDui.add(new int[] {item.getKey(),item.getValue()});
            }
        }
       }
       //把key取出来返回
       int[] ans = new int[k];
       for(int i=0;i<k;i++){
        ans[i] = xiaoDui.poll()[0];

       }
       return ans;

    }
}

相关推荐

  1. | 347. K 高频元素

    2024-04-08 10:52:04       35 阅读
  2. 347k高频元素

    2024-04-08 10:52:04       17 阅读
  3. 347k高频元素

    2024-04-08 10:52:04       18 阅读
  4. 【数据结构与算法】 347. K 高频元素

    2024-04-08 10:52:04       15 阅读
  5. 347. K 高频元素

    2024-04-08 10:52:04       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 10:52:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 10:52:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 10:52:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 10:52:04       20 阅读

热门阅读

  1. C#实践作业1(类、接口、委托)

    2024-04-08 10:52:04       11 阅读
  2. 动态规划算法 - LC354. 俄罗斯套娃信封问题

    2024-04-08 10:52:04       12 阅读
  3. Linux常用命令

    2024-04-08 10:52:04       12 阅读
  4. Scrapy数据存储到数据库

    2024-04-08 10:52:04       12 阅读
  5. 人到中年,IT从业者怎么办

    2024-04-08 10:52:04       12 阅读
  6. 猜测生日日期

    2024-04-08 10:52:04       15 阅读
  7. 正则表达式

    2024-04-08 10:52:04       12 阅读
  8. 基于Docker 快速搭建EFK日志中心

    2024-04-08 10:52:04       9 阅读
  9. 利用python抓取小说,爬虫抓取小说

    2024-04-08 10:52:04       12 阅读
  10. 关于APP分发,要取得更好效果需要注意的

    2024-04-08 10:52:04       12 阅读
  11. 深入浅出 -- 系统架构之负载均衡Nginx跨域配置

    2024-04-08 10:52:04       12 阅读
  12. 前后端接口写法(传输数据)

    2024-04-08 10:52:04       12 阅读
  13. Teamcenter 修改缓存文件夹名称及路径的方法

    2024-04-08 10:52:04       23 阅读
  14. css 手写返回箭头

    2024-04-08 10:52:04       11 阅读