题目:
题解:
思路:模拟
- 由于题目规定了是按顺序完成所有的任务,所以不考虑限制条件的话,每完成一个任务就花费一个时间。限制考虑限制条件的话,就需要使用一个 hashmap 来记录相同类型任务上次的完成时间,若相同的任务上次被完成了,则本次任务的时间为 max(day,same[t]+space+1),之后将完成本次任务的时间更新在 hashmap 中即可。
代码如下:
using LL = long long;
class Solution {
public:
// 由于要求相同类型的任务必须间隔 space 天,因此需要使用一个 hashmap 来记录上一次相同任务的完成时间,以便于下次遇到相同任务时,保证时间间隔最少为 space 天
long long taskSchedulerII(vector& a, int space) {
unordered_map same;
LL day=0;
for(int x:a)
{
// 不考虑相同任务的时间间隔是每运行一个任务,时间+1的
day+=1;
// 遇到同类型的任务,为了保证本任务能运行,与上次任务的时间至少间隔 space 天
if(same.count(x))day=max(day,same[x]+space+1);
// 更新完成该任务的时间
same[x]=day;
}
return day;
}
};


![[hashmap][模拟]leetcode2365:任务调度器 II(medium) [hashmap][模拟]leetcode2365:任务调度器 II(medium)](http://www.mshxw.com/aiimages/31/1040613.png)
