Relative Ranks

easy array sorting heap

Problem

Given distinct integer scores, return a string array where ans[i] is the rank of athlete i. The top three are "Gold Medal", "Silver Medal", "Bronze Medal"; the rest are their 1-based rank as a string.

Inputscore = [10, 3, 8, 9, 4]
Output["Gold Medal","5","Bronze Medal","Silver Medal","4"]
Sorted descending: 10, 9, 8, 4, 3 → ranks 1..5 written back to original positions.

def find_relative_ranks(score):
    medals = ["Gold Medal", "Silver Medal", "Bronze Medal"]
    order = sorted(range(len(score)), key=lambda i: -score[i])
    ans = [""] * len(score)
    for rank, i in enumerate(order):
        ans[i] = medals[rank] if rank < 3 else str(rank + 1)
    return ans
function findRelativeRanks(score) {
  const medals = ["Gold Medal", "Silver Medal", "Bronze Medal"];
  const order = score.map((s, i) => i).sort((a, b) => score[b] - score[a]);
  const ans = new Array(score.length).fill("");
  order.forEach((i, rank) => {
    ans[i] = rank < 3 ? medals[rank] : String(rank + 1);
  });
  return ans;
}
class Solution {
    public String[] findRelativeRanks(int[] score) {
        String[] medals = {"Gold Medal", "Silver Medal", "Bronze Medal"};
        Integer[] order = new Integer[score.length];
        for (int i = 0; i < score.length; i++) order[i] = i;
        Arrays.sort(order, (a, b) -> score[b] - score[a]);
        String[] ans = new String[score.length];
        for (int r = 0; r < order.length; r++) {
            ans[order[r]] = r < 3 ? medals[r] : String.valueOf(r + 1);
        }
        return ans;
    }
}
vector<string> findRelativeRanks(vector<int>& score) {
    vector<string> medals = {"Gold Medal", "Silver Medal", "Bronze Medal"};
    int n = score.size();
    vector<int> order(n);
    iota(order.begin(), order.end(), 0);
    sort(order.begin(), order.end(), [&](int a, int b){ return score[a] > score[b]; });
    vector<string> ans(n);
    for (int r = 0; r < n; r++) {
        ans[order[r]] = r < 3 ? medals[r] : to_string(r + 1);
    }
    return ans;
}
Time: O(n log n) Space: O(n)