Advertisement
absolute100

Untitled

Oct 25th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 35,
  2. 一个伊朗人面的,题目是task scheduler,举例如下
  3. Tasks: AABABCD
  4. Cooldown Time: 2
  5. A__AB_ABCD
  6. Output: 10
  7. 就是说同样类型的task之间至少要等2,每个task的执行时间是1
  8. followup: 如果cooldown是个参数,也就是说有可能会很长时间,怎么修改之前的程序
  9.  
  10. // only 2, just two variables
  11. string taskSchedule2(const string& tasks)
  12. {
  13.     size_t n=tasks.size();
  14.     string res;
  15.     char pre=0, two=0;
  16.     for(size_t i=0;i<n;i++) {
  17.         if(pre!=tasks[i] && two!=tasks[i]){
  18.             two=pre;
  19.             pre=tasks[i];
  20.         } else {
  21.             if(pre==tasks[i]){
  22.                 res.append(2, '_');
  23.             } else if(two==tasks) {
  24.                 res.append(1, '_');
  25.             }
  26.             two=0;
  27.             pre=task[i];
  28.         }
  29.         res+=task[i];
  30.     }
  31.     return res;
  32. }
  33.  
  34. string taskSchedule(const string& tasks, size_t k)
  35. {
  36.     size_t n=tasks.size();
  37.     unordered_map<char, size_t> umap;
  38.     string res;
  39.     size_t count=0;
  40.     for(size_t i=0;i<n;i++) {
  41.         if(umap.find(tasks[i])==umap.end() || count-umap[tasks[i]]>k) {
  42.             res.push_back(tasks[i]);
  43.             umap[tasks[i]]=count;
  44.         } else {
  45.            
  46.             res.append(k-count+umap[tasks[i]], '_');
  47.             count=umap[tasks[i]]+k;
  48.             res.push_back(tasks[i]);
  49.             umap[tasks[i]]=count;
  50.         }
  51.         count++;
  52.     }
  53.     return res;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement