小C参与了一场抢红包的游戏,现在他想要对所有参与抢红包的人进行一次运气排名。排名规则如下:抢到的金额越多,排名越靠前;如果两个人抢到的金额相同,则按照他们抢红包的顺序进行排名。比如,如果小C和小U抢到的金额相同,但小C比小U先抢,则小C排在小U前面。
def solution(n: int, s: list, x: list) -> list:
# PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE
# write code here
assert n == len(s) == len(x)
start = {}
cnt = {}
for i in range(n):
if s[i] not in start.keys():
start[s[i]] = i
cnt[s[i]] = cnt.get(s[i], 0) + x[i]
a = sorted(cnt.keys(), key=lambda s: (-cnt[s], start[s]))
return a
if __name__ == '__main__':
print(solution(4, ["a", "b", "c", "d"], [1, 2, 2, 1]) == ['b', 'c', 'a', 'd'])
print(solution(3, ["x", "y", "z"], [100, 200, 200]) == ['y', 'z', 'x'])
print(solution(5, ["m", "n", "o", "p", "q"], [50, 50, 30, 30, 20]) == ['m', 'n', 'o', 'p', 'q'])