Problem statement

https://leetcode.com/problems/relative-ranks/

Solution

Just sort numbers, keeping original indexes. Then traverse sorted array, and put everyone on its place.

Complexity

Time complexity is O(n log n), space complexity is O(n).

Code

class Solution:
    def findRelativeRanks(self, nums):
        n = len(nums)
        pairs = sorted(zip(nums, range(n)), reverse = True)
        out = [0]*n
        medals = {0: "Gold", 1: "Silver", 2: "Bronze"}
        for i, (j, k) in enumerate(pairs):
            out[k] = medals[i] + " Medal" if i <= 2 else str(i + 1)
        
        return out