2022.09.01 Bilibili Java开发笔试

好像后端有几套试卷,我和我同学做的都不一样
我的是 “JAVA开发工程师-人事产研组【2023届】

10 分 单选 * 5
20 分 多选 * 5
70 分 编程 * 3

编程题一个链表,两个树
鼠鼠的第三题实在没啥思路,水分提前跑路了。


贴一下第二题代码,感觉写的又臭又长,不知道有没有大佬有更好的解法
public int maxValue(TreeNode root) {
        // 记录每一层能添加的最大值
        int[] change = new int[500001];
        Deque<TreeNode> deque = new ArrayDeque<>();

        // 记录每一层的和
        List<Integer> sum = new ArrayList<>();
        deque.addLast(root);

        // 深度
        int depth = 0;

        while (!deque.isEmpty()) {
            int size = deque.size();
            int curSum = 0, max = 0, min = 0;
            while (size-- > 0) {
                TreeNode cur = deque.pollFirst();
                curSum += cur.val;

                // 判断该节点的子节点交换上来,该层能不能变得更大
                int left = 0, right = 0;
                if (cur.left != null) {
                    left = cur.left.val - cur.val;
                    deque.addLast(cur.left);
                }
                if (cur.right != null) {
                    right = cur.right.val - cur.val;
                    deque.addLast(cur.right);
                }
                max = Math.max(max, Math.max(left, right));
                change[depth] = Math.max(change[depth], max);

                // 判断该节点换到下一层,下一层能不能变得更大
                left = -left;
                right = -right;
                if (cur.left != null) {
                    change[depth + 1] = Math.max(change[depth + 1], Math.max(left, right));
                }
                if (cur.right != null) {
                    change[depth + 1] = Math.max(change[depth + 1], Math.max(left, right));
                }
            }
            sum.add(curSum);
            depth++;
        }
        int max = Integer.MIN_VALUE;
        // 将每层之和,以及能添加的值 取最大值
        for (int i = 0; i < sum.size(); i++) {
            max = Math.max(sum.get(i) + Math.max(0, change[i]), max);
        }
        return max;
    }


#bilibili笔试#
全部评论
第二题层的最大权值怎么做的。 我是层序遍历父节点比较做不出来,只对了36%
2 回复 分享
发布于 2022-09-01 21:30 广东
大佬第二题什么思路啊
1 回复 分享
发布于 2022-09-01 21:03 内蒙古
气死了,本来可以AK的,第三题,树都分隔出来然后存数组里了,但要求排序,排序器逻辑没问题,但死活排不对,过40%。
点赞 回复 分享
发布于 2022-09-01 21:08 福建
大佬能看看哪步有问题吗
点赞 回复 分享
发布于 2022-09-01 21:56 江苏
都不难,做的有点慢了
3 回复 分享
发布于 2022-09-01 21:04 上海
第三个实在是递归不出来,给自己递归麻了。
3 回复 分享
发布于 2022-09-01 21:04 黑龙江
第三题应该是求左右节点 深度,然后用treemap排序,节点个数当key,深度不平衡就拆, 可惜
点赞 回复 分享
发布于 2022-09-01 21:35 辽宁

相关推荐

渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
03-27 17:33
门头沟学院 Java
代码飞升:同学院本,你要注意hr当天有没有回复过,早上投,还要打招呼要推销自己,不要一个劲投
点赞 评论 收藏
分享
评论
6
6
分享

创作者周榜

更多
牛客网
牛客企业服务