cs: add «3016. Minimum Number of Pushes to Type Word II»
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
989e7dfa33
commit
edafb98470
1 changed files with 33 additions and 0 deletions
33
cs/minimum-number-of-pushes-to-type-word-ii.cs
Normal file
33
cs/minimum-number-of-pushes-to-type-word-ii.cs
Normal file
|
@ -0,0 +1,33 @@
|
|||
public class Solution {
|
||||
private int[] GetFreqs(string word) {
|
||||
var freqs = new int[26];
|
||||
foreach (char c in word) {
|
||||
++freqs[c - 'a'];
|
||||
}
|
||||
return freqs;
|
||||
}
|
||||
|
||||
public int MinimumPushes(string word) {
|
||||
// Count occurences of letters
|
||||
var freqs = GetFreqs(word);
|
||||
|
||||
// Sort them (letters don't matter, only counts)
|
||||
Array.Sort(freqs);
|
||||
|
||||
var pushes = 0;
|
||||
|
||||
var (minPushes, used) = (1, 0);
|
||||
for (var i = freqs.Length - 1; i >= 0 && freqs[i] > 0; --i) {
|
||||
pushes += freqs[i] * minPushes;
|
||||
++used;
|
||||
|
||||
// used all buttons for the current position
|
||||
if (used >= 8) {
|
||||
++minPushes;
|
||||
used = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return pushes;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue