Мне кажется, что я хорошо разбираюсь в больших O из примеров, приведенных в моем учебнике, но как только мне приходится разбираться с реальными функциями, которые я написал сам, я в растерянности.Может ли кто-нибудь помочь мне рассчитать и понять сложность O и сложность времени / пространства для следующих трех функций?
По сути, это просто класс LeaderBoard
, и таблица лидеров отформатирована так:
{player_id: [average, [score1, score2, score3...]]...}
вот мой код:
class LeaderBoard:
def __init__(self):
self.leaderboard = {}
def add_score(self, player_id, score):
if player_id in self.leaderboard:
self.leaderboard[player_id][1].append(score)
avg = sum(self.leaderboard[player_id][1])/len(self.leaderboard[player_id][1])
self.leaderboard[player_id][0] = avg
return avg
self.leaderboard[player_id] = [score,[score]]
return score
def top(self, no_of_top_players):
top_list = []
for key,value in sorted(self.leaderboard.items(),key=lambda e:e[1][0], reverse=True):
top_list.append(key)
return top_list[:no_of_top_players]
def reset(self, player_id):
if player_id in self.leaderboard:
self.leaderboard[player_id][0] = 0
self.leaderboard[player_id][1] = []