Untitled

 avatar
unknown
plain_text
3 years ago
1.1 kB
6
Indexable
class Solution {
    class StringFreq {
        String word;
        int freq;
        
        public StringFreq(String word, int freq) {
            this.word = word;
            this.freq = freq;
        }
    }

    public List<String> topKFrequent(String[] words, int k) {
        Map<String, Integer> map = new HashMap<>();
        
        for (String word: words) {
            map.put(word, map.getOrDefault(word, 0) + 1);
        }

        List<StringFreq> list = new ArrayList<>();
        for (String key: map.keySet()) {
            list.add(new StringFreq(key, map.get(key)));
        }
        
        Collections.sort(list, new Comparator<StringFreq>(){
            public int compare(StringFreq o1, StringFreq o2) {
                if (o1.freq == o2.freq) {
                    return o2.word.compareTo(o1.word);
                }
                
                return o1.freq - o2.freq;
            }
        });
        
        List<String> results = new ArrayList<>();
        
        for (int i = 0; i < k; i++) {
            results.add(list.get(i).word);
        }
        
        return results;
    }
}
Editor is loading...