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']