374字符串权值最小化分割问题
题解
问题描述
小 G 定义了一个字符串的权值为:字符串的长度乘以字符串中不同字母的种类数量。现在,小 G 有一个字符串,她希望将这个字符串切分成 k 个子串,并希望这些子串的最大权值尽可能小。你需要帮助小 G 找到最优的切分方案,使得这 k 个子串中的最大权值最小化。
解题思路
看见最大值最小化直接二分答案,然后判断是否能够切分成 k 个子串。check的时候,遍历字符串,用一个集合记录当前子串的不同字母,如果当前子串的不同字母数量乘以当前子串的长度大于 mid,则说明需要切分,切分的次数加一。
最后判断切分的次数是否大于 k,如果大于 k,说明 mid 太小,需要增大,否则减小。
实现代码
1 | |
复杂度分析
时间复杂度:
- 二分查找的时间复杂度为
O(log (26 * n))。 - 每次
check调用的时间复杂度为O(n),因为需要遍历整个字符串。 - 因此,总的时间复杂度为
O(n log (26 * n))。
- 二分查找的时间复杂度为
空间复杂度:
- 使用了常数级别的额外空间,空间复杂度为
O(1)。
- 使用了常数级别的额外空间,空间复杂度为
374字符串权值最小化分割问题
https://kongshuilinhua.github.io/2025/02/01/374字符串权值最小化分割问题/