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
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.
relative-ranks/synced-solution.cpprelative-ranks/synced-solution.pyrelative-ranks/synced-solution.tsclass 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
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;
}
};
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;
}