Problem 4 Top K Frequent Words

模型拓展,我有一个复合item

class Item {
    int A;
    long B;
    String C;
    ....
}

我给你一个Collection of item, 我让你return出 Top K XXXX(Comparator怎么写)的item们

Step1: 统计词频==》 最经典Use Case

  • Map<String, Integer> freqMap: Key: Word, Value: Frequency

public void countFrequency(String[] words, List<String> words) {
    Map<String, Integer> freqMap = new HashMap<>();
    for (String word: word){
        freqMap.put(word, freqMapa.getOrDefault(word, 0) + 1);
    }
}

Step 2: 方法论

  • 如果你用的是MinHeap: online, 手握K size heap,扫描元素每次淘汰最差的

  • 如果你用的是MaxHeap: offline, 全部放进去poll K次

举一反三的复合体和母体的区别, PriortyQueue里放的item要自己写comparator, 根据题目需要全部都是能用if else搞定的事情

Method1: MinHeap

Method 2: MaxHeap

Last updated