zoukankan      html  css  js  c++  java
  • 347. Top K Frequent Elements

        /*
         * 347. Top K Frequent Elements
         * 2016-7-11 by Mingyang
         * 这个题目基本思路非常简单,就是把所有的值一个一个的放到Priority Queue里面去
         * 然后继续一个一个的弹出来,关键的点是需要把May的每一个Entry都传入到queue里面
         */
        public List<Integer> topKFrequent(int[] nums, int k) {
            HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
            for(int num: nums){
                map.put(num, map.containsKey(num)? map.get(num) + 1 : 1);
            }
            Queue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<Map.Entry<Integer, Integer>>(k,
                    new Comparator<Map.Entry<Integer, Integer>>() {
                        @Override
                        public int compare(Map.Entry<Integer, Integer> i1, Map.Entry<Integer, Integer> i2) {
                            return i2.getValue() - i1.getValue();
                        }
                    });
            queue.addAll(map.entrySet());
            List<Integer> res = new ArrayList<Integer>();
            for(int i = 0; i < k; i++){
                res.add(queue.poll().getKey());
            }
            return res;
        }
  • 相关阅读:
    GCD 并行子线程
    iOS开发>学无止境
    iOS开发>学无止境
    iOS开发>学无止境
    FMDB使用
    递归
    局部变量与全局变量
    函数式编程与参数
    文件的操作
    集合的操作
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5662966.html
Copyright © 2011-2022 走看看