1. 解题思路
这道题的话思路其实还是蛮简单的,显然我们的目的是要令对给定的word在键盘上敲击的次数最小。
因此,我们只需要对单词当中按照字符的频次进行倒序排列,然后出现频次越高的字母就安排尽量靠前的位置即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minimumPushes(self, word: str) -> int:
cnt = Counter(word)
cnt = sorted(cnt.items(), key=lambda x: x[1], reverse=True)
ans = 0
for i, (k, v) in enumerate(cnt):
ans += v * (i // 8 + 1)
return ans
提交代码评测得到:耗时137ms,占用内存17.6MB。
本文介绍了如何解决LeetCode问题3016,通过分析字符频次并优先安排高频率字符,提供了一个Python代码实现,时间复杂度为O(nlogn),内存占用适中。

被折叠的 条评论
为什么被折叠?



