15 Jun 2024C++ / Python / TypeScriptEasy

Relative Ranks

Collected C++, Python, TypeScript solutions for relative ranks. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Relative Ranks. the solution files are available below.

solution files

  • C++ relative-ranks/synced-solution.cpp
  • Python relative-ranks/synced-solution.py
  • TypeScript relative-ranks/synced-solution.ts

Solution files

Pythonrelative-ranks/synced-solution.py
class Solution:
    def findRelativeRanks(self, score: List[int]) -> List[str]:
        order = sorted(range(len(score)), key=lambda i: -score[i])
        answer = [class="syntax-string">""] * len(score)
        medals = [class="syntax-string">"Gold Medal", class="syntax-string">"Silver Medal", class="syntax-string">"Bronze Medal"]

        for rank, idx in enumerate(order):
            answer[idx] = medals[rank] if rank < class="syntax-number">3 else str(rank + class="syntax-number">1)
        return answer
C++relative-ranks/synced-solution.cpp
class Solution {
public:
    vector<string> findRelativeRanks(vector<int>& score) {
        vector<int> order(score.size());
        iota(order.begin(), order.end(), class="syntax-number">0);
        sort(order.begin(), order.end(), [&](int a, int b) {
            return score[a] > score[b];
        });

        vector<string> result(score.size());
        for (int rank = class="syntax-number">0; rank < static_cast<int>(order.size()); rank++) {
            int idx = order[rank];
            if (rank == class="syntax-number">0) {
                result[idx] = class="syntax-string">"Gold Medal";
            } else if (rank == class="syntax-number">1) {
                result[idx] = class="syntax-string">"Silver Medal";
            } else if (rank == class="syntax-number">2) {
                result[idx] = class="syntax-string">"Bronze Medal";
            } else {
                result[idx] = to_string(rank + class="syntax-number">1);
            }
        }
        return result;
    }
};
TypeScriptrelative-ranks/synced-solution.ts
function findRelativeRanks(score: number[]): string[] {
    const order = score.map((_, index) => index).sort((a, b) => score[b] - score[a]);
    const result = new Array<string>(score.length);
    const medals = [class="syntax-string">"Gold Medal", class="syntax-string">"Silver Medal", class="syntax-string">"Bronze Medal"];

    for (let rank = class="syntax-number">0; rank < order.length; rank++) {
        const idx = order[rank];
        result[idx] = rank < class="syntax-number">3 ? medals[rank] : String(rank + class="syntax-number">1);
    }
    return result;
}