rust_test/src/main.rs

32 lines
891 B
Rust

use std::collections::HashMap;
mod arr;
struct Solution {}
impl Solution {
pub fn distance(nums: Vec<i32>) -> Vec<i64> {
let mut ans = vec![0_i64; nums.len()];
let mut map: HashMap<i32, Vec<usize>> = HashMap::new();
for (i, num) in nums.iter().enumerate() {
map.entry(*num).or_insert(vec![]).push(i);
}
for (_, v) in map.into_iter() {
let mut local_len = 0;
for i in 1..v.len() {
local_len += v[i] - v[0];
}
ans[v[0]] = local_len as i64;
for i in 1..v.len() {
local_len =
local_len - (v[i] - v[i - 1]) * (v.len() - 1 - i) + (v[i] - v[i - 1]) * (i - 1);
ans[v[i]] = local_len as i64;
}
}
ans
}
}
fn main() {
println!("{:?}", Solution::distance(vec![1, 3, 1, 1, 2]));
}