Skip to content

Commit 1c0e419

Browse files
authored
Update Minimum Deletions to Make Character Frequencies Unique.java
1 parent f1ed2bc commit 1c0e419

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
class Solution {
22
public int minDeletions(String s) {
3-
int[] frequencies = new int[26];
3+
int[] frequency = new int[26];
44
for (char c : s.toCharArray()) {
5-
frequencies[c - 'a']++;
5+
frequency[c - 'a']++;
66
}
7-
Arrays.sort(frequencies);
8-
int expectedFrequency = frequencies[25];
9-
int numOfDeletions = 0;
10-
for (int i = 25; i >= 0; i--) {
11-
if (frequencies[i] == 0) {
12-
break;
13-
}
14-
if (frequencies[i] > expectedFrequency) {
15-
numOfDeletions += frequencies[i] - expectedFrequency;
16-
} else {
17-
expectedFrequency = frequencies[i];
7+
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
8+
for (int freq : frequency) {
9+
if (freq > 0) {
10+
pq.add(freq);
1811
}
19-
if (expectedFrequency > 0) {
20-
expectedFrequency--;
12+
}
13+
int numOfDeletions = 0;
14+
while (!pq.isEmpty()) {
15+
int removedFreq = pq.poll();
16+
if (!pq.isEmpty() && pq.peek() == removedFreq) {
17+
numOfDeletions++;
18+
if (removedFreq > 1) {
19+
pq.add(removedFreq - 1);
20+
}
2121
}
2222
}
2323
return numOfDeletions;
24-
}
24+
}
2525
}

0 commit comments

Comments
 (0)