猿辅导提前批一面JAVA凉经

听说是猿辅导第二轮把我捞起来了
猿辅导小哥冷漠又体贴,帮我debug太让人感动了
15min自我介绍+项目介绍+基础知识
40min代码

  1. 详细讲一下你的项目
  2. 详细说一下gc,gc的算法,垃圾回收收集器
  3. 如果在整理的过程中,还可以再分配内存吗?
  4. 算法题:int [] arr = {1,2,2,3,3,3,3,4,4,4,5,5,10}. k = 2. 如果次数大于2就删除。返回{1,2,2,5,5,10}
  5. 算法题:一个双向链表,拆成奇数链表和偶数链表。
/**
 * 猿辅导一面
 * 算法题: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工程师##校招##猿辅导##面经#
全部评论
数组算法题咋整
点赞 回复 分享
发布于 2019-08-24 11:29
4题要求复杂度了没
点赞 回复 分享
发布于 2019-08-24 11:33
数组算法题8.24那场笔试考了,第一道,然而我不会,想用python带的count函数统计个数,然后个数大于k的删掉,大体上是这个意思,反正我是凉了😂
点赞 回复 分享
发布于 2019-08-25 09:52

相关推荐

3 32 评论
分享
牛客网
牛客企业服务