| [ Web Proxy ] |
| Viewing: https://raw.githubusercontent.com/yanlingli3799/algorithm/master/Leetcode_692_115_java.java | [Back] [Original] |
* *
* 1 *
* : ["i", "love", "leetcode", "i", "love", "coding"], k = 2 * : ["i", "love"] * : "i" "love" 2 * "i" "love" */ /** * : 17 ms, Top K Frequent WordsJava83.42% * : 41.2 MB, Top K Frequent WordsJava74.16% * @param words * @param k * @return */ public static List topKFrequent(String[] words, int k) { HashMap wordMap = new HashMap(); List wordList = new ArrayList(); for (int i = 0; i < words.length; i++) { Integer node = wordMap.get(words[i]); if (node == null) node = 0; node += 1; wordMap.put(words[i], node); } List list = new ArrayList(wordMap.entrySet()); Collections.sort(list, new Comparator() { @Override public int compare(Map.Entry o1, Map.Entry o2) { int code = o1.getValue() - o2.getValue(); if (code != 0) { return -code; } else { return o1.getKey().compareTo(o2.getKey()); } } }); List entries = list.subList(0, k); for (Map.Entry entry : entries) { wordList.add(entry.getKey()); } return wordList; } public static void main(String[] args) { String words[] = {"i", "love", "leetcode", "i", "love", "coding"}; topKFrequent(words, 3); } }
| Web Proxy Viewer | New URL | Original Page |