• 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;
        }
  • 相关阅读:
    混合背包
    二维背包
    0/1背包问题(DP)
    冒泡排序
    快速排序
    最长上升子序列
    二分查找
    n后问题
    crontab 定时任务
    删除以某字符串开头的表
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5662966.html
Copyright © 2020-2023  润新知