python-leetcode-506. 相对名次

Python解决LeetCode 506相对名次问题

506. 相对名次 - 力扣(LeetCode)

可以使用 Python 的 sorted() 方法对 score 进行排序,并使用 dict 记录每个分数对应的排名。然后遍历 score 生成最终的 answer 数组。以下是代码实现:

def findRelativeRanks(score):
    # 按得分排序,记录每个分数对应的排名
    sorted_score = sorted(score, reverse=True)
    rank_dict = {score: str(i + 1) for i, score in enumerate(sorted_score)}
    
    # 特殊处理前三名
    medals = ["Gold Medal", "Silver Medal", "Bronze Medal"]
    for i in range(min(3, len(sorted_score))):
        rank_dict[sorted_score[i]] = medals[i]
    
    # 生成最终的获奖结果
    return [rank_dict[s] for s in score]

# 示例测试
score = [5, 3, 8, 6, 2]
print(findRelativeRanks(score))  

解释:

  1. 排序:将 score 按降序排列,获得从高到低的排名顺序。
  2. 建立排名映射:使用 dict 存储分数到排名的映射。
  3. 处理前三名:将前三名替换为金牌、银牌和铜牌。
  4. 生成结果:遍历原始 score,从 rank_dict 获取对应的排名或奖牌。

示例:

输入:

score = [5, 3, 8, 6, 2]

输出:

['Silver Medal', '4', 'Gold Medal', 'Bronze Medal', '5']

这样就能正确返回所有运动员的获奖情况! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值