5097 力扣排行榜

2021-09-29 07:10:45 字數 1943 閱讀 3541

新一輪的「力扣杯」程式設計大賽即將啟動,為了動態顯示參賽者的得分資料,需要設計乙個排行榜 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 分 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個...