LeetCode #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