我刚刚试着解决了hackerrank上的“攀爬排行榜”问题。在我的尝试中,我在测试用例6-9中多次失败,运行时错误。
def climbingLeaderboard(ranked, player):
# Write your code here
ret = []
leaderboardSet = set(ranked)
leaderboard = sorted(leaderboardSet, reverse = True)
print(leaderboard, player)
lenght = len(leaderboard)
for score in player:
while lenght > 0 and score >= leaderboard[lenght-1]:
lenght -= 1
ret.append(lenght+1)
return ret将leaderboardSet初始化更改为
leaderboardSet = list(set(ranked))代码完美无缺。由于调试基本上是不可能的,我想知道-在集合和列表之间的排序函数是否有差异,这将导致这个问题的大集合?
编辑:这是指向原始问题的链接:https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem
发布于 2022-04-11 11:34:26
python在其‘sorted函数中使用蒂姆塞德。如果已经有排序的输入部分,它可以工作得非常快。list意味着某种秩序,而set则意味着缺乏秩序。后者可以防止检测已排序部件的噱头,从而防止获得全速。我做了以下测试:
import timeit
timeit.timeit(setup='s=list(range(1000))',stmt='sorted(s)')
timeit.timeit(setup='s=set(range(1000))',stmt='sorted(s)')并得到以下结果
7.1935602
10.4982897https://stackoverflow.com/questions/71826656
复制相似问题