出现次数的topk问题
出现次数的TopK问题
https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee?tpId=117&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
public String[][] topKstrings (String[] strings, int k) { // write code here Map<String,Integer> map = new HashMap<>(); for(String s:strings){ int num = map.getOrDefault(s,0); map.put(s,num+1); } PriorityQueue<String> pQueue = new PriorityQueue<String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { int temp = map.get(o2)-map.get(o1);//大顶堆 return temp==0?o1.compareTo(o2):temp; } }); Set<String> set = map.keySet(); for (String s:set){ pQueue.add(s); } String[][] res = new String[Math.min(pQueue.size(),k)][2]; int i=0; while (pQueue.size()>0 && i<k){ String ss = pQueue.poll(); res[i][0] = ss; res[i][1] = map.get(ss)+""; i++; } return res; }