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
复制代码

 

posted @   Junior_bond  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示