1331.数组序号转换
链接:1331.数组序号转换
难度:Easy
标签:数组、哈希表、排序
简介:给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。
题解 1 - rust
- 编辑时间:2022-07-28
- 执行用时:32ms
- 内存消耗:5.5MB
- 编程语言:rust
- 解法介绍:存到 map。
use std::collections::HashMap;
impl Solution {
pub fn array_rank_transform(arr: Vec<i32>) -> Vec<i32> {
let n = arr.len();
let mut ilist = Vec::with_capacity(n);
for i in 0..n {
ilist.push(i)
}
ilist.sort_by(|a, b| arr[*a].cmp(&arr[*b]));
let mut map = HashMap::<i32, i32>::new();
let mut idx = 1;
for i in 0..n {
if i == 0 {
map.insert(arr[ilist[i]], idx);
} else if arr[ilist[i - 1]] == arr[ilist[i]] {
continue;
} else {
idx += 1;
map.insert(arr[ilist[i]], idx);
}
}
arr
.iter()
.map(|num|*map.get(&num).unwrap())
.collect()
}
}