猿辅导提前批一面JAVA凉经
听说是猿辅导第二轮把我捞起来了
猿辅导小哥冷漠又体贴,帮我debug太让人感动了
15min自我介绍+项目介绍+基础知识
40min代码
- 详细讲一下你的项目
- 详细说一下gc,gc的算法,垃圾回收收集器
- 如果在整理的过程中,还可以再分配内存吗?
- 算法题:int [] arr = {1,2,2,3,3,3,3,4,4,4,5,5,10}. k = 2. 如果次数大于2就删除。返回{1,2,2,5,5,10}
- 算法题:一个双向链表,拆成奇数链表和偶数链表。
/**
* 猿辅导一面
* 算法题:int [] arr = {1,2,2,3,3,3,3,4,4,4,5,5,10,10}. k = 2. 如果次数大于2就删除。返回{1,2,2,5,5,10}
*/
public class interview01 {
public static void main(String [] args) {
int [] arr = {1,2,2,3,3,3,3,4,4,4,5,5,10,10};
int k = 2;
interview01 solution = new interview01();
System.out.print(solution.arrDel(arr, k));
}
public int arrDel(int [] arr, int k) {
// res代表有效数字的个数,也代表下一个可以插入的地方
int res = 0;
int count = 1;
int len = arr.length;
for (int i = 0; i < len-1; ++i) {
if (arr[i] == arr[i+1]) {
count++;
} else {
// ok
if (count <= k) {
for (int j = 0; j < count; j++) {
arr[res+j] = arr[i];
}
res = res + count;
}
count = 1;
}
}
// 判断最后一个是否满足条件
if (count <= k) {
for (int j = 0; j < count; j++) {
arr[res+j] = arr[len-1];
}
res = res+count;
}
for (int i = 0; i < len; ++i) {
System.out.print(arr[i] + " ");
}
return res;
}
}#Java工程师##校招##猿辅导##面经#