Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 35,
- 一个伊朗人面的,题目是task scheduler,举例如下
- Tasks: AABABCD
- Cooldown Time: 2
- A__AB_ABCD
- Output: 10
- 就是说同样类型的task之间至少要等2,每个task的执行时间是1
- followup: 如果cooldown是个参数,也就是说有可能会很长时间,怎么修改之前的程序
- // only 2, just two variables
- string taskSchedule2(const string& tasks)
- {
- size_t n=tasks.size();
- string res;
- char pre=0, two=0;
- for(size_t i=0;i<n;i++) {
- if(pre!=tasks[i] && two!=tasks[i]){
- two=pre;
- pre=tasks[i];
- } else {
- if(pre==tasks[i]){
- res.append(2, '_');
- } else if(two==tasks) {
- res.append(1, '_');
- }
- two=0;
- pre=task[i];
- }
- res+=task[i];
- }
- return res;
- }
- string taskSchedule(const string& tasks, size_t k)
- {
- size_t n=tasks.size();
- unordered_map<char, size_t> umap;
- string res;
- size_t count=0;
- for(size_t i=0;i<n;i++) {
- if(umap.find(tasks[i])==umap.end() || count-umap[tasks[i]]>k) {
- res.push_back(tasks[i]);
- umap[tasks[i]]=count;
- } else {
- res.append(k-count+umap[tasks[i]], '_');
- count=umap[tasks[i]]+k;
- res.push_back(tasks[i]);
- umap[tasks[i]]=count;
- }
- count++;
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement