Advertisement
ogv

Untitled

ogv
Nov 1st, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.36 KB | None | 0 0
  1. // Runtime: 12 ms, faster than 58.41% of Java online submissions for Top K Frequent Words.
  2. // Memory Usage: 38.9 MB, less than 67.86% of Java online submissions for Top K Frequent Words.
  3. class Solution {
  4.     public List<String> topKFrequent(String[] words, int k) {        
  5.         Map<String, Integer> freqMap = new HashMap<>();
  6.        
  7.         ArrayList<SortedSet<String>> wordsByFreq = new ArrayList<>();        
  8.         for (int i = 0; i <= words.length; i++) wordsByFreq.add(new TreeSet<String>());
  9.        
  10.         for (String word: words) {
  11.             Integer freq = freqMap.get(word);
  12.            
  13.             if (freq == null) {                
  14.                 freqMap.put(word, 1);
  15.                 wordsByFreq.get(1).add(word);                
  16.             } else {
  17.                 wordsByFreq.get(freq).remove(word);                
  18.                 freq++;
  19.                 wordsByFreq.get(freq).add(word);
  20.                 freqMap.put(word, freq);                
  21.             }                        
  22.         }
  23.        
  24.         List<String> result = new ArrayList<>();        
  25.         for (int freq = words.length; freq >0 && result.size() < k; freq--) {
  26.             for (String word: wordsByFreq.get(freq)) {
  27.                 result.add(word);
  28.                 if (result.size() >= k) break;
  29.             }
  30.         }
  31.         return result;
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement