LeetCode简单题之相对名次
題目
給你一個長度為 n 的整數(shù)數(shù)組 score ,其中 score[i] 是第 i 位運動員在比賽中的得分。所有得分都 互不相同 。
運動員將根據(jù)得分 決定名次 ,其中名次第 1 的運動員得分最高,名次第 2 的運動員得分第 2 高,依此類推。運動員的名次決定了他們的獲獎情況:
名次第 1 的運動員獲金牌 “Gold Medal” 。
名次第 2 的運動員獲銀牌 “Silver Medal” 。
名次第 3 的運動員獲銅牌 “Bronze Medal” 。
從名次第 4 到第 n 的運動員,只能獲得他們的名次編號(即,名次第 x 的運動員獲得編號 “x”)。
使用長度為 n 的數(shù)組 answer 返回獲獎,其中 answer[i] 是第 i 位運動員的獲獎情況。
示例 1:
輸入:score = [5,4,3,2,1]
輸出:[“Gold Medal”,“Silver Medal”,“Bronze Medal”,“4”,“5”]
解釋:名次為 [1st, 2nd, 3rd, 4th, 5th] 。
示例 2:
輸入:score = [10,3,8,9,4]
輸出:[“Gold Medal”,“5”,“Bronze Medal”,“Silver Medal”,“4”]
解釋:名次為 [1st, 5th, 3rd, 2nd, 4th] 。
提示:
n == score.length
1 <= n <= 10^4
0 <= score[i] <= 10^6
score 中的所有值 互不相同
來源:力扣(LeetCode)
解題思路
??題目需要計算每一個分數(shù)的名次,自然需要綁定下標做一次分數(shù)從高到低排序,排完序的列表中第i(i<=0<n)項存有原列表的元素以及當前元素在原列表中的下標,而i所表示的便是當前元素的名次,故還需要一次綁定,得到i和元素的原下標,并修改原列表完成算法。
class Solution:def findRelativeRanks(self, score: List[int]) -> List[str]:s=list(enumerate(score))s.sort(key=lambda x:-x[1])podium=["Gold Medal","Silver Medal","Bronze Medal"]for x,(y,z) in enumerate(s):try:score[y]=podium[x]except:score[y]=str(x+1)return score
總結
以上是生活随笔為你收集整理的LeetCode简单题之相对名次的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之构造矩形
- 下一篇: LeetCode简单题之Excel表列名