zoukankan      html  css  js  c++  java
  • LeetCode347. 前 K 个高频元素

    class Solution {
        public List<Integer> topKFrequent(int[] nums, int k) {
            //先统计每个数字出现的频率
            
            
            Map<Integer,Integer> map = new HashMap<>();
            for(int i = 0; i < nums.length ; i++)
            {
                if(map.containsKey(nums[i]))
                {
                    map.put(nums[i], map.get(nums[i]) + 1);
                }
                else
                {
                    map.put(nums[i] , 1);
                }
            }
    
    
            //根据出现的次数构造小顶堆,把次数少的放在堆顶
            PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>()
            {
                public int compare(Integer a, Integer b)
                {
                    return map.get(a) - map.get(b);
                }
            });
    
            for(int key : map.keySet())
            {
                if(pq.size() < k)
                {
                    pq.add(key);
                }
                else if(map.get(key) > map.get(pq.peek()))
                {
                    pq.remove();//直接删除,因为只需要K个
                    pq.add(key);
                }
            }
            List<Integer> res = new ArrayList<>();
            while (!pq.isEmpty())
            {
                res.add(pq.remove());
            }
            return res;
    
        }
    }
  • 相关阅读:
    数据访问类
    批量删除与查询
    CRUD
    数据访问与全局变量
    设计模式
    加载类
    PDO数据访问抽象层(上)
    PDO数据访问抽象层(下)
    会话控制
    php租房题目
  • 原文地址:https://www.cnblogs.com/swqblog/p/12878476.html
Copyright © 2011-2022 走看看