2833. 距离原点最远的点
This commit is contained in:
parent
4ee2acd245
commit
4460a2f028
33
src/main.rs
33
src/main.rs
|
|
@ -1,31 +1,24 @@
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
mod arr;
|
mod arr;
|
||||||
|
|
||||||
struct Solution {}
|
struct Solution {}
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn distance(nums: Vec<i32>) -> Vec<i64> {
|
pub fn furthest_distance_from_origin(moves: String) -> i32 {
|
||||||
let mut ans = vec![0_i64; nums.len()];
|
let mut mv = 0;
|
||||||
let mut map: HashMap<i32, Vec<usize>> = HashMap::new();
|
let mut dif = 0;
|
||||||
for (i, num) in nums.iter().enumerate() {
|
for c in moves.chars() {
|
||||||
map.entry(*num).or_insert(vec![]).push(i);
|
match c {
|
||||||
}
|
'L' => mv -= 1,
|
||||||
for (_, v) in map.into_iter() {
|
'R' => mv += 1,
|
||||||
let mut local_len = 0;
|
_ => dif += 1,
|
||||||
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
|
if mv >= 0 { mv + dif } else { -mv + dif }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{:?}", Solution::distance(vec![1, 3, 1, 1, 2]));
|
println!(
|
||||||
|
"{:?}",
|
||||||
|
Solution::furthest_distance_from_origin("_R__LL_".into())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue