新一輪的「力扣杯」程式設計大賽即將啟動,為了動態顯示參賽者的得分資料,需要設計乙個排行榜 leaderboard。
請你幫忙來設計這個 leaderboard 類,使得它有如下 3 個函式:
addscore(playerid, score):
假如參賽者已經在排行榜上,就給他的當前得分增加 score 點分值並更新排行。
假如該參賽者不在排行榜上,就把他新增到榜單上,並且將分數設定為 score。
top(k):返回前 k 名參賽者的 得分總和。
reset(playerid):將指定參賽者的成績清零。題目保證在呼叫此函式前,該參賽者已有成績,並且在榜單上。
請注意,在初始狀態下,排行榜是空的。
示例 1:
輸入:
["leaderboard","addscore","addscore","addscore","addscore","addscore","top","reset","reset","addscore","top"]
[,[1,73],[2,56],[3,39],[4,51],[5,4],[1],[1],[2],[2,51],[3]]
輸出:[null,null,null,null,null,null,73,null,null,null,141]
解釋:
leaderboard leaderboard = new leaderboard ();
leaderboard.addscore(1,73); // leaderboard = [[1,73]];
leaderboard.addscore(2,56); // leaderboard = [[1,73],[2,56]];
leaderboard.addscore(3,39); // leaderboard = [[1,73],[2,56],[3,39]];
leaderboard.addscore(4,51); // leaderboard = [[1,73],[2,56],[3,39],[4,51]];
leaderboard.addscore(5,4); // leaderboard = [[1,73],[2,56],[3,39],[4,51],[5,4]];
leaderboard.top(1); // returns 73;
leaderboard.reset(1); // leaderboard = [[2,56],[3,39],[4,51],[5,4]];
leaderboard.reset(2); // leaderboard = [[3,39],[4,51],[5,4]];
leaderboard.addscore(2,51); // leaderboard = [[2,51],[3,39],[4,51],[5,4]];
leaderboard.top(3); // returns 141 = 51 + 51 + 39;
1 <= playerid, k <= 10000
題目保證 k 小於或等於當前參賽者的數量
1 <= score <= 100
最多進行 1000 次函式呼叫
題解:
class leaderboard:
def __init__(self):
self.d = collections.defaultdict(int)
def addscore(self, playerid: int, score: int) -> none:
self.d[playerid] += score
def top(self, k: int) -> int:
return sum(heapq.nlargest(k, self.d.values()))
def reset(self, playerid: int) -> none:
del self.d[playerid]
mysql製作排行榜 mysql實現排行榜
博主新人一枚,大家可以提出自己的寶貴意見。下來我們進入正題。大家首先要了解介面的場景,再就是排行榜的規則,我們這裡說的中國式排行榜。排行榜總結了一下分為3種 中國式排行 非中國式排行1 非中國式排行2 1 1 1 2 2 2 2 2 3 3 4 4 3 5 5 4 5 6 5 7 7 select ...
奧運排行榜
每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...
奧運排行榜
7 17 奧運排行榜 25 分 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個...