LeetCode #1086. High Five

题目

1086. High Five


解题方法

先对原数组降序排序,设置一个返回值rat,计数器scorecount用来统计是否达到top 5 score,当前学生id变量curid,平均值avg。遍历items数组,累加avg并统计分数个数,达到5个分数时将这个学生的信息插入到rat的开头,然后跳过该学生剩余的成绩。循环结束返回rat即可。
时间复杂度:O(nlogn)
空间复杂度:O(1)


代码

class Solution:
    def highFive(self, items: List[List[int]]) -> List[List[int]]:
        items.sort(reverse=True)
        rat = []
        scorecount = 0
        curid = items[0][0]
        avg = 0
        i = 0
        while i < len(items):
            avg += items[i][1]
            scorecount += 1
            i += 1
            if scorecount == 5:
                avg //= 5
                rat.insert(0, [curid, avg])
                avg = 0
                scorecount = 0
                while i < len(items) and items[i][0] == curid:
                    i += 1
                else:
                    if i < len(items):
                        curid = items[i][0]
        
        return rat
posted @ 2020-12-01 13:32  老鼠司令  阅读(132)  评论(0编辑  收藏  举报