004_入门_python练习题:相对排名

1.问题描述

根据N名运动员得分,找到相对等级和获得最高分前3名的人,分别获得金牌,银牌和铜牌。N是正整数,并且不超过10000。所有运动员的成绩都保证是独一无二的。

  • 问题示例
    输入[5,4,3,2,1],输出["Gold Medal","Silver Medal","Bronze Medal","4","5"],前3名运动员得分较高,根据得分依次获得金牌,银牌和铜牌。对于后两名运动员,根据分数输出相对等级。

我的写法

class Solution():
    #参数nums:整数列表
    #返回列表
    def findRelativeRanks(self,score,nums):
        while isinstance(nums,int)==True:
            s=sorted(score,reverse=True)
            for i in range(0,nums):
                if s[i] != s[i+1]:
                    s[0]="Gold Medal"
                    s[1]="Silver Medal"
                    s[2]="Bronze Medal"
                    s[3]="4"
                    s[4]="5"           
            
if __name__=="__main__":
    score=[1,2,3,4,5,6]
    nums=6
    m=s[0:5]
    solution=Solution()
    solution.findRelativeRanks(nums,score)
    print(m)


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

参考答案

class Solution:
    #参数nums:整数列表
    #返回列表
    def findRelativeRanks(self,nums):
        score={}
        for i in range(len(nums)):
            score[nums[i]]=i
        sortedScore=sorted(nums,reverse=True)
        answer=[0]*len(nums)
        for i in range(len(sortedScore)):
            res=str(i+1)
            if i == 0:
                res='Gold Medal'
            if i == 1:
                res='Silver Medal'
            if i == 2:
                res='Bronze Medal'
            answer[score[sortedScore[i]]]=res 
        return answer
#主函数
if __name__ == "__main__":
    num=[7,6,5,4,3,2,1]
    s=Solution()
    print("输入:",num)
    print("输出:",s.findRelativeRanks(num))

输入: [7, 6, 5, 4, 3, 2, 1]
输出: ['Gold Medal', 'Silver Medal', 'Bronze Medal', '4', '5', '6', '7']

你可能感兴趣的:(004_入门_python练习题:相对排名)