Greedy Algorithms8 sections · 316 units
Open in Course

Minimum Deletions - Implementation

The code

Here is the solution:

function minDeletions(s)
 count := frequency map
 freqs := sorted list of frequencies descending
 used := set
 deletions := 0
 for f in freqs
 while f > 0 and f in used
 f := f - 1
 deletions := deletions + 1
 if f > 0 then
 used.add(f)
 return deletions

Time: O(n+k2)O(n + k^2) where kk is alphabet size. Space: O(k)O(k).

Process from highest frequency down. Each frequency is reduced until unique or gone.