Facebook 电面【一亩三分地论坛面经版】 - Powered by Discuz!
给一个vector 里面的元素表示task type,给一个N,表示执行相同task时要等上N个单位时间 例子中用'_'表示
// [1,2,1,2], N=3
// 1,2,1,2 --> 4,
// 1,2,_,_,1,_,_,2--> 6.
// [1,2,1,2], N=2
// 1,2,1,2 --> 4,
// 1, 2, _, 1,2--> 5
应该是这样的. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷
[1,2,1,2] N=3
1,2,_,_,1,2 得到len=6
因为要保持任务执行顺序一样
所以第二个任务1只能等上3个单位时间 才能执行 这三个单位时间 第一个被任务2占据 后两个是用'_'来表示单位时间
又比如.
[1] N=4 无论N是多少 都只输出长度1
因为后面已经没有要继续执行的任务了,尤其是相同的任务
又比如
[1,2,1,2] N=2
[1,2,_,1,2] 长度应该是5
public static int task(int[] input, int N) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(input[0], 1);
for (int i = 1; i < input.length; ++i) {
if (map.containsKey(input[i])) {
int maxNum = Math.max(map.get(input[i - 1]) + 1, map.get(input[i]) + N + 1);
map.put(input[i], maxNum);
} else {
map.put(input[i], map.get(input[i - 1]) + 1);
}
}
return map.get(input[input.length - 1]);
}
Read full article from Facebook 电面【一亩三分地论坛面经版】 - Powered by Discuz!
给一个vector 里面的元素表示task type,给一个N,表示执行相同task时要等上N个单位时间 例子中用'_'表示
// [1,2,1,2], N=3
// 1,2,1,2 --> 4,
// 1,2,_,_,1,_,_,2--> 6.
// [1,2,1,2], N=2
// 1,2,1,2 --> 4,
// 1, 2, _, 1,2--> 5
应该是这样的. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷
[1,2,1,2] N=3
1,2,_,_,1,2 得到len=6
因为要保持任务执行顺序一样
所以第二个任务1只能等上3个单位时间 才能执行 这三个单位时间 第一个被任务2占据 后两个是用'_'来表示单位时间
又比如.
[1] N=4 无论N是多少 都只输出长度1
因为后面已经没有要继续执行的任务了,尤其是相同的任务
又比如
[1,2,1,2] N=2
[1,2,_,1,2] 长度应该是5
public static int task(int[] input, int N) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(input[0], 1);
for (int i = 1; i < input.length; ++i) {
if (map.containsKey(input[i])) {
int maxNum = Math.max(map.get(input[i - 1]) + 1, map.get(input[i]) + N + 1);
map.put(input[i], maxNum);
} else {
map.put(input[i], map.get(input[i - 1]) + 1);
}
}
return map.get(input[input.length - 1]);
}
Read full article from Facebook 电面【一亩三分地论坛面经版】 - Powered by Discuz!