排序 Leetcode 1086 前5科的均分

题目

给你一个不同学生的分数列表,请按 学生的 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 之间
每个学生至少有五个分数

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/high-five
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

先将成绩放入一个字典当中,然后排序计算

代码

class Solution(object):
    def highFive(self, items):
        """
        :type items: List[List[int]]
        :rtype: List[List[int]]
        """
        dic = {}
        
        for item in items:
            _id = item[0]
            mark = item[1]
            if _id in dic: 
                dic[_id] = [mark] + dic[_id]
            else:
                dic[_id] = [mark]
        
        res = []
        for key in dic:
            temp = dic[key]
            temp.sort()
            print (temp)
            res.append([key, sum(temp[-5:])//5])
        
        return res
                    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容