func findRelativeRanks(nums []int) []string { idx2num := make(map[int]int) for i := range nums { idx2num[i] = nums[i] } sort.Sort(sort.Reverse(sort.IntSlice(nums))) num2rank := make(map[int]int) for i := range nums { num2rank[nums[i]] = i } res := make([]string, len(nums)) for i := range res { rank := num2rank[idx2num[i]] switch rank { case 0: res[i] = "Gold Medal" case 1: res[i] = "Silver Medal" case 2: res[i] = "Bronze Medal" default: res[i] = strconv.Itoa(rank + 1) } } return res }