给你一个不同学生的分数列表,
请按 学生的 id 顺序 返回每个学生 最高的五科 成绩的 平均分。
对于每条 items[i] 记录,
items[i][0] 为学生的 id,items[i][1] 为学生的分数。
平均分请采用整数除法计算。
输入:[[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 之间
- 每个学生至少有五个分数
/**
* @param {number[][]} items
* @return {number[][]}
*/
var highFive = function(items) {
let map = {}, i = 0, temp = [];
while(i < items.length) {
if(map[items[i][0]]) {
fixHigh(map[items[i][0]], items[i][1]);
} else {
map[items[i][0]] = [items[i][1]];
}
i++;
}
for(let key in map) {
temp.push([parseInt(key), getAverage(map[key])]);
}
return temp;
};
const getAverage = nums => Math.floor(nums.reduce((sum, num) => sum + num) / nums.length);
const fixHigh = (list, score) => {
if(list.length < 5) {
list.push(score);
} else {
if(score > list[0]) {
list[0] = score;
}
}
list.sort((n1, n2) => n1 - n2);
}
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了100.00%的用户
内存消耗 : 37.4 MB, 在所有 JavaScript 提交中击败了100.00%的用户
/**
* @param {number[][]} items
* @return {number[][]}
*/
var highFive = function(items) {
let map = {}, i = 0, temp = [];
while(i < items.length) {
if(map[items[i][0]]) {
map[items[i][0]].push(items[i][1]);
} else {
map[items[i][0]] = [items[i][1]];
}
i++;
}
for(let key in map) {
let list = map[key];
list.sort((n1, n2) => n2 - n1);
console.log(list)
temp.push([parseInt(key), Math.floor((list[0] + list[1] + list[2] + list[3] + list[4]) / 5)]);
}
return temp;
};
执行用时 : 108 ms, 在所有 JavaScript 提交中击败了52.63%的用户
内存消耗 : 37.8 MB, 在所有 JavaScript 提交中击败了100.00%的用户