佳都科技 大数据开发后端笔试

笔试时间 90min 20道选择题 + 3道编程题

主要还是考数据库的操作 如何增删查改 如何检索 然后阅读数据库代码 找错误/模拟运行

只有一道算法题 是AcWing_3578题 的变式 个人感觉算是降低难度

每次操作选取两个数 ai 与 aj, 并赋值ai = ai + aj, 删除aj;

中位数计算方式为为(m+1)/2向下取整。

输入第一行数据组数t 此后每组 第一行数组长度n 操作k数 第二行为数组

2

3 1

3 1 2

4 3

5 3 2 1

输出中位数

1

11

代码如下仅供参考:

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //一共有t组数据
        int t = scan.nextInt();;
        int[] mid = new int[t];
        //执行t次
        for (int i = 0; i < t; i++) {
            int n = scan.nextInt();
            int k = scan.nextInt();
            int[] num = new int[n];
            //记录本组的数组数据
            for (int j = 0; j < n; j++) {
                num[j] = scan.nextInt();
            }
            //排序
            Arrays.sort(num);
            // 从最大的两个数开始
            // 每次操作将最大的两数相加 num[n-j-1] + num[n-j]
            // 并赋值给前面的一位数 后面的那位置0
            for (int j = 1; j < k + 1; j++) {
                num[n-j-1] = num[n-j-1] + num[n-j];
                num[n-j] = 0;
            }
            //进行完k次操作后再排序
            Arrays.sort(num);
            //此时前面有k个0 (视为已删除的量) 因此本组中位数的序号为为 [(n - 1)+ k]对2取整
            mid[i] = num[(n+k-1)/2];
        }
        //输出即可
        for (int i = 0; i < t; i++) {
            System.out.print(mid[i] + " ");
        }
    }
}
#佳都科技##23届找工作求助阵地#
全部评论
感谢大佬分享
点赞 回复 分享
发布于 2023-03-03 15:54 四川
笔试完有后续了吗
点赞 回复 分享
发布于 2023-03-03 15:57 山东

相关推荐

评论
5
7
分享
牛客网
牛客企业服务