佳都科技 大数据开发后端笔试
笔试时间 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届找工作求助阵地#