Konstante
Senior Member
C-like:
use std::collections::{HashMap, BTreeSet};
impl Solution {
pub fn array_rank_transform(arr: Vec<i32>) -> Vec<i32> {
let rank_of = BTreeSet::<_>::from_iter(arr.iter().cloned())
.into_iter()
.enumerate()
.fold(HashMap::new(), |mut rank_of, (idx, num)| {
rank_of.insert(num, idx as i32 + 1);
rank_of
});
arr.iter().map(|num| rank_of[num]).collect()
}
}
Sửa lần cuối:



dùng l +(r-l) / 2 cho khỏi phải nghĩ 