当前位置: 代码迷 >> 综合 >> [leetcode] 621. Task Scheduler(medium)
  详细解决方案

[leetcode] 621. Task Scheduler(medium)

热度:86   发布时间:2024-01-05 01:14:43.0
原题

思路:
按频率最大的字母来分块,频率最大的字母个数-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);}
};
  相关解决方案