Leedcode-相对名次
自己写的:
from typing import List class Solution: def findRelativeRanks(self, score: List[int]) -> List[str]: # 获取成绩列表的长度 n = len(score) # 复制原始成绩列表 score_former = score # 对成绩列表进行排序并逆序排列 score_after = sorted(score) score_after.reverse() # 初始化结果列表,长度与成绩列表相同,初始值为-1 res = [-1] * n # 遍历每一个成绩,找到其排名并分配对应的奖牌或排名 for i in range(n): # 找到原始成绩在排序后列表中的排名(加1表示实际排名) ranking = score_after.index(score_former[i]) + 1 # 根据排名分配奖牌或排名 if ranking == 1: res[i] = 'Gold Medal' # 第一名:金牌 elif ranking == 2: res[i] = 'Silver Medal' # 第二名:银牌 elif ranking == 3: res[i] = 'Bronze Medal' # 第三名:铜牌 else: res[i] = str(ranking) # 其他名次:直接使用数字排名 # 返回结果列表 return res
gpt优化:
class Solution: def findRelativeRanks(self, score: List[int]) -> List[str]: # 获取分数的个数 n = len(score) # 对分数进行排序,并在排序时指定降序排列 sorted_scores = sorted(score, reverse=True) # 创建一个字典,键为分数,值为排名 rank_dict = {sorted_scores[i]: i + 1 for i in range(n)} # 初始化结果列表 res = [''] * n # 遍历原始分数列表,填充结果 for i in range(n): ranking = rank_dict[score[i]] if ranking == 1: res[i] = 'Gold Medal' elif ranking == 2: res[i] = 'Silver Medal' elif ranking == 3: res[i] = 'Bronze Medal' else: res[i] = str(ranking) # 返回结果列表 return res

浙公网安备 33010602011771号