原题
思路: 按频率最大的字母来分块,频率最大的字母个数-1为分成的块数,每一块个数为n+1 比如AAABBCE,n=2, 则分为A…A… +A AAABBBCCEE,n=2,则分为AB…AB… +AB 答案 = MAX(原数组长度,所有分块的长度和 + 频率最大的字母种数) 仅当n=0时,答案是原数组长度。
class Solution {
public:
int leastInterval(vector<char>& tasks, int n) {
unordered_map<char,int> mp;
int count = 0;
for(auto e : tasks)
{
mp[e]++;
count = max(count, mp[e]);
}
int ans = (count-1)*(n+1);
for(auto e : mp) if(e.second == count) ans++;
return max((int)tasks.size(), ans);
}
};
转载于:https://www.cnblogs.com/ruoh3kou/p/9893443.html
相关资源:数据结构—成绩单生成器