跳到主要内容

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()
}
}