1086. 前五科的均分

题目

给你一个不同学生的分数列表,请按 学生的 id 顺序 返回每个学生 最高的五科 成绩的 平均分。

对于每条 items[i] 记录, items[i][0] 为学生的 id,items[i][1] 为学生的分数。平均分请采用整数除法计算。

示例 1:

1
2
3
4
5
输入:[[1,91],[1,92],[2,93],[2,97],[1,60],[2,77],[1,65],[1,87],[1,100],[2,100],[2,76]]
输出:[[1,87],[2,88]]
解释:
id = 1 的学生平均分为 87。
id = 2 的学生平均分为 88.6。但由于整数除法的缘故,平均分会被转换为 88。

提示:

  • 1 <= items.length <= 1000
  • items[i].length == 2
  • 学生的 ID 在 1 到 1000 之间
  • 学生的分数在 1 到 100 之间
  • 每个学生至少有五个分数

解法

解法一:

排序二维数组

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
public int[][] highFive(int[][] items) {
Arrays.sort(items,((a,b) -> ((a[0] == b[0]) ? b[1] - a[1] : a[0] - b[0])));
int[][] ans = new int[items[items.length-1][0]][2];
for (int i = 0; i < items.length; i++) {
if (i == 0 || items[i][0] != items[i-1][0]) {
ans[items[i][0]-1][0] = items[i][0];
for (int j = i; j < i+5; j++) ans[items[j][0]-1][1] += items[j][1];
ans[items[i][0]-1][1] /= 5;
i += 4;
}
}
return ans;
}
0%