Top K Frequent Elements

来源:互联网 发布:java的函数式编程 编辑:程序博客网 时间:2024/05/17 01:52

先贴出用了heap的做法,稍后要学会用桶排序来做。

public class Solution {    public List<Integer> topKFrequent(int[] nums, int k) {        List<Integer> res = new LinkedList<>();        if (nums == null || nums.length == 0) {            return res;        }        Map<Integer, Integer> map = new HashMap<>();        for (int i: nums) {            if (map.containsKey(i)) {                map.put(i, map.get(i) + 1);            } else {                map.put(i, 0);            }        }        PriorityQueue<Pair> queue = new PriorityQueue<>(11, new Comparator<Pair>(){            @Override            public int compare(Pair a, Pair b) {                return a.count - b.count;            }        });        for (Map.Entry<Integer, Integer> entry: map.entrySet()) {            queue.offer(new Pair(entry.getKey(), entry.getValue()));            if (queue.size() > k) {                queue.poll();            }        }        while (!queue.isEmpty()) {            res.add(0, queue.poll().num);        }        return res;    }        class Pair{        int num;        int count;        public Pair (int n, int c) {            num = n;            count = c;        }    }}


0 0
原创粉丝点击