FB面经prepare: Task Schedule - neverlandly - 博客园
用HashMap保存每一个task的下一次可以开始执行的最早时间
http://www.1point3acres.com/bbs/thread-161904-1-1.html
第二题是Task Schedule, 地里有面经。大致意思是每种task都有冷却时间,比如task1执行后,要经过interval时间后才能再次执行,求总共所需时间。
Sample 1
tasks: 1, 1, 2, 1. recovery interval: 2
output: 7 (order is 1 _ _ 1 2 _ 1)
Sample 2
tasks: 1, 2, 3, 1, 2, 3. recovery interval: 3 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.
output: 7 (order is 1 2 3 _ 1 2 3)
一开始写了个bug,三姐让我描述一遍test case, 自己改了过来。followup是tasks是无序的,大致讲了一下思路,期间也让三姐提示了一下,时间就到了。问了几个问题结束。
一开始是有序的,比如说1, 1, 2, 1,一定要先执行第一个task1,然后等task1恢复,再执行第2个task1,再执行task2..... followup是无序的,就是不用按给的顺序执行,也就是可以先执行task1,然后task1还没恢复时,先执行task2, etc......
Read full article from FB面经prepare: Task Schedule - neverlandly - 博客园
每种task都有冷却时间,比如task1执行后,要经过interval时间后才能再次执行,求总共所需时间。
第二题是Task Schedule, 地里有面经。大致意思是每种task都有冷却时间,比如task1执行后,要经过interval时间后才能再次执行,求总共所需时间。
Sample 1
tasks: 1, 1, 2, 1. recovery interval: 2
output: 7 (order is 1 _ _ 1 2 _ 1)
Sample 2
tasks: 1, 2, 3, 1, 2, 3. recovery interval: 3 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.
output: 7 (order is 1 2 3 _ 1 2 3)
一开始写了个bug,三姐让我描述一遍test case, 自己改了过来。followup是tasks是无序的,大致讲了一下思路,期间也让三姐提示了一下,时间就到了。问了几个问题结束。
5 public int schedule(int[] str, int recover) { 6 if (str==null || str.length==0) return 0; 7 if (recover == 0) return str.length; 8 int pos = 0; 9 int time = 0; 10 HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 11 for (; pos<str.length; pos++) { 12 int cur = str[pos]; 13 if (!map.containsKey(cur)) { 14 map.put(cur, time+recover+1); 15 } 16 else { 17 int lastApr = map.get(cur); 18 if (time >= lastApr) { 19 map.put(cur, time); 20 } 21 else { 22 pos--; 23 } 24 } 25 time++; 26 } 27 return time; 28 }http://www.1point3acres.com/bbs/thread-161904-1-1.html
一开始是有序的,比如说1, 1, 2, 1,一定要先执行第一个task1,然后等task1恢复,再执行第2个task1,再执行task2..... followup是无序的,就是不用按给的顺序执行,也就是可以先执行task1,然后task1还没恢复时,先执行task2, etc......
Read full article from FB面经prepare: Task Schedule - neverlandly - 博客园