506 相對名次(字典)

2021-10-09 14:47:12 字數 1446 閱讀 9417

1. 問題描述:

給出 n 名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 「金牌」,「銀牌」 和「 銅牌」("gold medal", "silver medal", "bronze medal")。(注:分數越高的選手,排名越靠前。)

示例 1:

輸入: [5, 4, 3, 2, 1]

輸出: ["gold medal", "silver medal", "bronze medal", "4", "5"]

解釋: 前三名運動員的成績為前三高的,因此將會分別被授予 「金牌」,「銀牌」和「銅牌」 ("gold medal", "silver medal" and "bronze medal").

餘下的兩名運動員,我們只需要通過他們的成績計算將其相對名次即可

n 是乙個正整數並且不會超過 10000。

所有運動員的成績都不相同。

2. 思路分析:

分析題目可以知道我們需要先對成績陣列進行排序才知道名次情況,所以先要對陣列進行排序,然後遍歷排序之後的陣列,使用map來記錄對應的名次關係,對於python語言可以使用字典來記錄對應分數--名次關係,最後遍歷一下未排序的成績陣列,根據map中記錄的名次關係得到當前的分數--名次的關係

3. **如下:

import collections

from typing import list

class solution:

def findrelativeranks(self, nums: list[int]) -> list[str]:

# 先排序(從大到小進行排序), sorted得到排序陣列的副本

nums_sort = sorted(nums, reverse=true)

# 使用collections.defaultdict(str)方法生成乙個字典

dic = collections.defaultdict(str)

for i in range(len(nums)):

# 使用字典記錄對應的分數--名次關係

dic[nums_sort[i]] = str(i + 1)

res = ["0" for i in range(len(nums))]

dic[nums_sort[0]] = "gold medal"

if len(nums) > 1:

dic[nums_sort[1]] = "silver medal"

if len(nums) > 2:

dic[nums_sort[2]] = "bronze medal"

for i in range(len(nums)):

res[i] = dic[nums[i]]

return res

506 相對名次

給出 n 名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal 注 分數越高的選手,排名越靠前。示例 1 輸入 5,4,3,2,1 輸出 gold medal silver...

Leetcode 506相對名次

給出n名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal 注 分數越高的選手,排名越靠前。示例 1 輸入 5,4,3,2,1 輸出 gold medal silver m...

LeetCode506 相對名次

給出 n 名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal 注 分數越高的選手,排名越靠前。示例 1 n 是乙個正整數並且不會超過 10000。所有運動員的成績都不相同...