506.relative-ranks.go 531 B

1234567891011121314151617181920212223242526
  1. func findRelativeRanks(nums []int) []string {
  2. idx2num := make(map[int]int)
  3. for i := range nums {
  4. idx2num[i] = nums[i]
  5. }
  6. sort.Sort(sort.Reverse(sort.IntSlice(nums)))
  7. num2rank := make(map[int]int)
  8. for i := range nums {
  9. num2rank[nums[i]] = i
  10. }
  11. res := make([]string, len(nums))
  12. for i := range res {
  13. rank := num2rank[idx2num[i]]
  14. switch rank {
  15. case 0:
  16. res[i] = "Gold Medal"
  17. case 1:
  18. res[i] = "Silver Medal"
  19. case 2:
  20. res[i] = "Bronze Medal"
  21. default:
  22. res[i] = strconv.Itoa(rank + 1)
  23. }
  24. }
  25. return res
  26. }