From 283b4c151866ecb730151024e5b6f6b0603ccb58 Mon Sep 17 00:00:00 2001 From: li_chx Date: Mon, 13 Apr 2026 08:49:21 +0800 Subject: [PATCH] =?UTF-8?q?1848.=20=E5=88=B0=E7=9B=AE=E6=A0=87=E5=85=83?= =?UTF-8?q?=E7=B4=A0=E7=9A=84=E6=9C=80=E5=B0=8F=E8=B7=9D=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) 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) + ); }