LC 1244 [M] Design A Leaderboard - ALawliet/algorithms GitHub Wiki
from queue import PriorityQueue
class Leaderboard(object):
def __init__(self):
self.d = defaultdict(int)
def addScore(self, playerId, score):
"""
:type playerId: int
:type score: int
:rtype: None
"""
self.d[playerId] += score
def top(self, K):
"""
:type K: int
:rtype: int
"""
minH = PriorityQueue(K + 1)
for score in self.d.values():
minH.put(score)
if minH.full(): # minH.qsize() > K
minH.get()
return sum(minH.queue)
def reset(self, playerId):
"""
:type playerId: int
:rtype: None
"""
del self.d[playerId]