1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-09-19 17:56:55 +02:00

rs: add «506. Relative Ranks»

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-05-08 13:06:34 +02:00
parent 01c0dbb83a
commit 4cb30e4b1b
Signed by: mfocko
GPG key ID: 7C47D46246790496

30
rs/relative-ranks.rs Normal file
View file

@ -0,0 +1,30 @@
use std::collections::BinaryHeap;
impl Solution {
fn pos_to_string(pos: usize) -> String {
match pos {
0 => String::from("Gold Medal"),
1 => String::from("Silver Medal"),
2 => String::from("Bronze Medal"),
_ => format!("{}", pos + 1),
}
}
pub fn find_relative_ranks(score: Vec<i32>) -> Vec<String> {
let mut heap = BinaryHeap::new();
for (i, s) in score.into_iter().enumerate() {
heap.push((s, i));
}
let mut ranks = vec![String::new(); heap.len()];
let mut i = 0;
while let Some((_, idx)) = heap.pop() {
ranks[idx] = Self::pos_to_string(i);
i += 1;
}
ranks
}
}