网易笔试参考答案研发岗

1 素数拆分

一个正整数数组A,可以把其中的某个元素A[i]拆分成若干个和为A[i]的数(也可以不拆分),问这个数组里最多能有多少个素数。

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        long n = input.nextLong();
        long[] nums = new long[(int) n];
        long res = 0;

        for (long i = 0; i < nums.length; i++)
            nums[(int) i] = input.nextInt();

        // 2 是最小的素数,全部拆成最小的素数,把个数累加。
        for (long num : nums)
            res += num / 2;

        System.out.println(res);
    }
}

2. 排列

大概意思:保持第二行输入的顺序不变,假设为数组 A,把数组 B[1..n] 与 A 的差集按递增序插入。
事后诸葛亮。
示例数据

INPUT:
5 2
4 2

OUTPUT: 1 3 4 2 5

// 归并
public class Main {

    public static void main(String[] args) {
        // 0. Some kind of bullshit.
        Scanner input = new Scanner(System.in);
        List<Integer> res = new ArrayList<>();
        int n = input.nextInt();
        int m = input.nextInt();

        int[] A = new int[m]; // 用于存储已出现的数字
        int[] B = new int[n - m]; // 用于存储未出现的数字
        boolean[] C = new boolean[n + 1]; // 用于检验 A 是否出现

        // 1. 获取已有的数字 [2, 1, 5]
        for (int i = 0; i < m; i++) {
            A[i] = input.nextInt();
            C[A[i]] = true;
        }

        // 2. 获取剔除掉 1 中获取数字之后的数组
        int k = 0;
        for (int i = 1; i <= n; ++i)
            if (!C[i])
                B[k++] = i;

        // 3. 归并排序
        int idxA = 0, idxB = 0;
        while (idxA < m && idxB < k) {
            if (A[idxA] < B[idxB])
                res.add(A[idxA++]);
            else
                res.add(B[idxB++]);
        }

        // 4. 合并剩余部分
        while (idxA < m)
            res.add(A[idxA++]);

        while (idxB < k)
            res.add(B[idxB++]);

        for (int i = 0; i < res.size() - 1; i++)
            System.out.print(res.get(i) + " ");
        System.out.print(res.get(res.size() - 1));
    }
}

3. 平分礼物

// 回溯
public class Main {

    private static int res;

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int T = input.nextInt();
        while (T-- > 0) {
            int n = input.nextInt();
            int[] a = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = input.nextInt();
                res += a[i];
            }

            dfs(a, 0, 0, 0, 0);
            System.out.println(res);
        }
    }

    /**
     * 递归更新最小抛弃价值
     * @param a 价值数组
     * @param i 价值下标
     * @param first 第一个人
     * @param second 第二个人
     * @param delta 要抛弃的价值
     */
    private static void dfs(int[] a, int i, int first, int second, int delta) {
        if (i == a.length) { // 分完一轮之后进行判断
            if (first == second) // 如果正好能够分的平均,更新最小值。
                res = Math.min(delta, res);
            return;
        }

        dfs(a, i + 1, first + a[i], second, delta); // 把 a[i] 分给第一个人
        dfs(a, i + 1, first, second + a[i], delta); // 把 a[i] 分给第二个人
        dfs(a, i + 1, first, second, delta + a[i]); // 把 a[i] 扔掉
    }
}

4. 送货xx

#网易笔试##笔试题目##秋招##网易#
全部评论
有收到面试通知的没
点赞 回复 分享
发布于 2020-08-12 16:33
老哥,你这第三题没超时吗?我和你写的差不多,就过了50
点赞 回复 分享
发布于 2020-08-12 13:55
第二题我是真的懵逼,测试两个都对了 import bisect if __name__ == "__main__":     n,m = map(int, input().split(" "))     t = list(map(int, input().split(" ")))     s = t.copy()     for i in range(1,n+1):         if i in s:             continue         bisect.insort_left(s,i)     print(" ".join([str(i) for i in s]))
点赞 回复 分享
发布于 2020-08-08 17:53

相关推荐

1.&nbsp;你在SLG项目实习时,遇到策划临时变更需求的情况,具体是如何沟通协调的?比如有没有印象较深的一次需求变更,你是怎么调整开发计划、确保功能按时交付的?2.&nbsp;你提到单人完成的“模拟农场”demo是最有成就感的项目,这个demo的核心玩法(如种植、建造、交互)在技术实现上有什么难点?3.&nbsp;你说开发时遇到实现不了的部分会请教主程、查资料,那在“模拟农场”demo或实习项目中,有没有哪个技术难点让你印象深刻?4.&nbsp;你认为自己的短板是框架搭建、网络通信和设计模式(如对象池),那有没有针对这些短板做过学习计划?比如近期打算先深入学习哪个知识点,或者通过什么方式(如做小demo、看课程)提升?5.&nbsp;公司初级Unity岗位初期以生产休闲游戏关卡为主,你对“高效稳定输出关卡”有什么理解?比如如何保证关卡拼接的规范性、减少后续修改成本,你会提前做哪些准备?6.&nbsp;你平时会通过B站、知乎看技术分享,那最近有没有学到什么对游戏开发有帮助的知识点?比如某个Unity优化技巧、设计模式的实际应用,能不能简单分享一下?7.&nbsp;你觉得自己在游戏开发方面(如技术能力、项目经验、学习能力)的核心优势是什么?可以试着梳理1-2个具体亮点吗?8.&nbsp;你喜欢跑步、滑板,注重身体健康,这种规律的生活方式对你的开发工作有什么帮助?
查看8道真题和解析
点赞 评论 收藏
分享
1.&nbsp;你专业分游戏开发方向,课程中除了计算机基础,还学了游戏原型、引擎介绍等,这些课程内容如何支撑你后续的项目开发(比赛demo、实习工作)?2.&nbsp;委托和事件的核心区别是事件更安全,那实际开发中,哪些场景会优先用事件而非委托?比如UI按钮点击用事件,还有其他例子吗?3.&nbsp;Unity是单线程,常用协程处理复杂计算,那协程和多线程的本质区别是什么?在处理耗时操作(如资源加载)时,协程如何避免阻塞主线程?4.&nbsp;C#的垃圾回收是标记-清除算法,还提到分代回收,能具体说说分代回收的原理吗?比如不同代的对象回收频率有什么差异?5.&nbsp;UI优化中,打图集要注意大小、填充率,分图集按通用/功能模块分,那如果图集内图片格式(如RGBA8888、RGBA4444)不同,会影响合批吗?6.&nbsp;单例模式要求构造函数私有、全局唯一,那在Unity中实现单例时,如何处理场景切换时单例对象的销毁问题?会用DontDestroyOnLoad吗?7.&nbsp;观察者模式是“一对多”,Unity中常用的例子有哪些?比如UI事件、游戏内状态变化通知,能结合你实习中的任务举例说明吗?8.&nbsp;使用Git时,除了频繁拉取避免冲突,还有哪些协作规范能减少冲突?你实习中用过哪些分支策略?9.&nbsp;微信小程序游戏的UI适配,用Fairy&nbsp;GUI的关联系统和锚点,那针对长短屏手机,除了宽度适配/高度适配,有没有其他适配方案?比如按屏幕比例缩放UI元素大小?10.&nbsp;数据持久化有文件序列化、云服务器存储,ScriptableObject用于配置复用,那ScriptableObject存储的数据和PlayerPrefs有什么区别?分别适合存什么类型的数据?11.&nbsp;DoTween执行多个动画时用序列(Sequence),那如果多个动画需要并行执行,该怎么实现?比如同时移动UI和修改UI透明度。12.&nbsp;AB包分包按类型/场景/逻辑分,卸载时需考虑是否卸载资源,那如果AB包之间有依赖(如A包依赖B包的材质),卸载B包会导致A包资源失效吗?该如何处理依赖包的卸载?13.&nbsp;排查bug时用断点逐步调试,那遇到偶现bug(如特定操作才触发),除了断点,还有什么排查手段?14.&nbsp;状态机有进入/更新/退出状态,行为树有可视化节点,那在控制怪物AI时,什么时候适合用状态机,什么时候适合用行为树?比如SLG游戏中怪物巡逻-攻击,用哪种更灵活?15.&nbsp;性能优化中,GPU层面要减少半透明物体(避免像素重绘),那如果游戏中必须用半透明效果(如技能特效),有什么优化技巧?16.&nbsp;Unity中调整物体渲染层级,除了父物体层级、Layer、Z轴,还有什么方式?
查看16道真题和解析
点赞 评论 收藏
分享
评论
5
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务