621. 任务调度器

文章目录

1.题目

输入: tasks = ["A","A","A","B","B","B"], n = 2
输出: 8
执行顺序: A -> B -> (待命) -> A -> B -> (待命) -> A -> B.
  • 题目解释:链接
  • 这道题目不需要去再次刷,题目的技巧性太强

2.代码

所以整体的解题步骤如下:
计算每个任务出现的次数
找出出现次数最多的任务,假设出现次数为 x
计算至少需要的时间 (x - 1) * (n + 1),记为 min_time
计算出现次数为 x 的任务总数 count,计算最终结果为 min_time + count

class Solution {
public:
    int leastInterval(vector<char>& tasks, int n) {
    	vecot<int> res(26,0);
    	for (int i=0;i<tasks.size();++i)
    	{
    		++res[tasks[i]-'A'];
    	}
		
		sort(res.begin(),res.end());
		int i=25,x=res[25];
		while (i>=0 && x==res[i]) --i;
		return max(res.size(),(x-1)*(n+1)+(25-i));
    }
};

上一篇:现代大学英语精读第二版(第二册)学习笔记(原文及全文翻译)——9A - Confessions of a Miseducated Man(一个错误教育受害者的自白)


下一篇:轻松一刻,善于沟通