diff --git a/src/main.rs b/src/main.rs index 09d9877..4cbd6a7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,32 +1,21 @@ -use std::collections::HashMap; - mod arr; struct Solution {} impl Solution { - pub fn minimum_distance(nums: Vec) -> i32 { - let mut mp = HashMap::>::new(); + pub fn get_min_distance(nums: Vec, target: i32, start: i32) -> i32 { + let mut ans = 1000000; for i in 0..nums.len() { - if mp.contains_key(&nums[i]) { - mp.get_mut(&nums[i]).unwrap().push(i as i32); - } else { - mp.insert(nums[i], vec![i as i32]); + if nums[i] == target { + ans = ans.min((i as i32 - start).abs_diff(0) as i32); } } - let mut ans = 1e9 as i32; - 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 } + ans } } 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) + ); }