Skip to content

Commit 8082a62

Browse files
committed
minimum_distance_between_three_equal_elements-ii.rs
1 parent 8c08043 commit 8082a62

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
impl Solution {
2+
pub fn minimum_distance(nums: Vec<i32>) -> i32 {
3+
let mut ans = i32::MAX;
4+
let mut is = vec![-1; 100005];
5+
let mut js = vec![-1; 100005];
6+
for (k, n) in nums.into_iter().enumerate() {
7+
let n = n as usize;
8+
let k = k as i32;
9+
if is[n] == -1 {
10+
is[n] = k;
11+
} else if js[n] == -1 {
12+
js[n] = k;
13+
} else {
14+
ans = ans.min(2 * (k - is[n]));
15+
is[n] = js[n];
16+
js[n] = k;
17+
}
18+
}
19+
if ans == i32::MAX {
20+
-1
21+
} else {
22+
ans
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)