Frequency 类问题

速度尚可,超过65.15%

public class Solution {
    private class Node implements Comparable<Node>{
        int key;
        int frequency;
        public Node(int key, int frequency){
            this.key = key;
            this.frequency = frequency;
        }
        public int compareTo(Node a){
            return a.frequency - this.frequency;
        }
    }

    public List<Integer> topKFrequent(int[] nums, int k) {
        PriorityQueue<Node> maxHeap = new PriorityQueue<Node>();
        HashMap<Integer, Node> map = new HashMap<>();
        List<Integer> list = new ArrayList<>();

        for(int i = 0; i < nums.length; i++){
            if(!map.containsKey(nums[i])){
                map.put(nums[i], new Node(nums[i], 1));
            } else {
                Node node = map.get(nums[i]);
                node.frequency ++;
                map.put(nums[i], node);
            }
        }

        for(Integer key : map.keySet()){
            maxHeap.offer(map.get(key));
        }

        for(int i = 0; i < k; i++){
            list.add(maxHeap.poll().key);
        }

        return list;
    }
}

大数据情况下, top K frequent

Last updated