其实是个简单的模拟题,但是比赛的时候思维很混乱调试了很久,赛后看到一个很简洁的写法。
class Solution {
public:
long long taskSchedulerII(vector<int>& tasks, int space) {
unordered_map<int,long long>last;
long long ans=0;
for(int j=0;j<tasks.size();j++){
if(last.count(tasks[j])==0)
last[tasks[j]]=++ans;
else {
ans=max(ans+1,last[tasks[j]]+space+1ll);//关键点,直接跳到可以选任务的时刻
last[tasks[j]]=ans;
}
}
return ans;
}
};