1848. 到目标元素的最小距离
This commit is contained in:
parent
444863b22d
commit
283b4c1518
29
src/main.rs
29
src/main.rs
|
|
@ -1,32 +1,21 @@
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
mod arr;
|
mod arr;
|
||||||
|
|
||||||
struct Solution {}
|
struct Solution {}
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn minimum_distance(nums: Vec<i32>) -> i32 {
|
pub fn get_min_distance(nums: Vec<i32>, target: i32, start: i32) -> i32 {
|
||||||
let mut mp = HashMap::<i32, Vec<i32>>::new();
|
let mut ans = 1000000;
|
||||||
for i in 0..nums.len() {
|
for i in 0..nums.len() {
|
||||||
if mp.contains_key(&nums[i]) {
|
if nums[i] == target {
|
||||||
mp.get_mut(&nums[i]).unwrap().push(i as i32);
|
ans = ans.min((i as i32 - start).abs_diff(0) as i32);
|
||||||
} else {
|
|
||||||
mp.insert(nums[i], vec![i as i32]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let mut ans = 1e9 as i32;
|
ans
|
||||||
for key in mp.keys() {
|
|
||||||
let arr = mp.get(key).unwrap();
|
|
||||||
if arr.len() < 3 {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
for i in 2..arr.len() {
|
|
||||||
ans = ans.min(arr[i] - arr[i - 2]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ans == 1e9 as i32 { -1 } else { ans * 2 }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{:?}", Solution::minimum_distance(vec![1,1,2,3,2,1,2],));
|
println!(
|
||||||
|
"{:?}",
|
||||||
|
Solution::get_min_distance(vec![1, 1, 2, 3, 2, 1, 2], 1, 2)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue