Relative Ranks

EasyArraySortingHeap (Priority Queue)

Solution

export function findRelativeRanks(score: number[]): string[] {
  const n = score.length;
  const medal = ['Gold Medal', 'Silver Medal', 'Bronze Medal'];
  const getRelativeRank = (rank: number) => {
    return rank < 3 ? medal[rank] : (rank + 1).toString();
  };
  const relativeRanks = new Array(n).fill('');
  const ranks = new Array(n)
    .fill(0)
    .map((_, i) => i)
    .sort((a, b) => score[b] - score[a]);
  ranks.forEach((i, rank) => (relativeRanks[i] = getRelativeRank(rank)));
 
  return relativeRanks;
}