// Accepted // Runtime: 4 ms // Memory Usage: 39.1 MB // Submitted: January 15th, 2021 import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; class Solution { public int[] frequencySort(int[] nums) { Map count = new HashMap(); for (int n : nums) count.put(n, count.getOrDefault(n, 0) + 1); PriorityQueue> pq = new PriorityQueue<>((a, b) -> a.getValue() != b.getValue() ? a.getValue() - b.getValue() : b.getKey() - a.getKey()); pq.addAll(count.entrySet()); int[] sorted = new int[nums.length]; int i = 0; while(!pq.isEmpty()) { Map.Entry entry = pq.poll(); int k = entry.getKey(); int v = entry.getValue(); while (v-- > 0) sorted[i++] = k; } return sorted; } }