diff --git a/sort-array-by-increasing-frequency/Solution.java b/sort-array-by-increasing-frequency/Solution.java new file mode 100644 index 0000000..9fda972 --- /dev/null +++ b/sort-array-by-increasing-frequency/Solution.java @@ -0,0 +1,27 @@ +// Accepted +// Runtime: 4 ms +// Memory Usage: 39.1 MB +// Submitted: January 15th, 2021 + +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; + } +} \ No newline at end of file