File tree Expand file tree Collapse file tree
solution/3700-3799/3761.Minimum Absolute Distance Between Mirror Pairs Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -238,6 +238,38 @@ function minMirrorPairDistance(nums: number[]): number {
238238}
239239```
240240
241+ #### Rust
242+
243+ ``` rust
244+ use std :: collections :: HashMap ;
245+
246+ impl Solution {
247+ pub fn min_mirror_pair_distance (nums : Vec <i32 >) -> i32 {
248+ let n = nums . len ();
249+ let mut ans = n as i32 + 1 ;
250+ let mut pos : HashMap <i32 , i32 > = HashMap :: new ();
251+
252+ fn reverse (mut x : i32 ) -> i32 {
253+ let mut y = 0 ;
254+ while x > 0 {
255+ y = y * 10 + x % 10 ;
256+ x /= 10 ;
257+ }
258+ y
259+ }
260+
261+ for (i , & v ) in nums . iter (). enumerate () {
262+ if let Some (& j ) = pos . get (& v ) {
263+ ans = ans . min (i as i32 - j );
264+ }
265+ pos . insert (reverse (v ), i as i32 );
266+ }
267+
268+ if ans > n as i32 { - 1 } else { ans }
269+ }
270+ }
271+ ```
272+
241273<!-- tabs: end -->
242274
243275<!-- solution: end -->
Original file line number Diff line number Diff line change @@ -235,6 +235,38 @@ function minMirrorPairDistance(nums: number[]): number {
235235}
236236```
237237
238+ #### Rust
239+
240+ ``` rust
241+ use std :: collections :: HashMap ;
242+
243+ impl Solution {
244+ pub fn min_mirror_pair_distance (nums : Vec <i32 >) -> i32 {
245+ let n = nums . len ();
246+ let mut ans = n as i32 + 1 ;
247+ let mut pos : HashMap <i32 , i32 > = HashMap :: new ();
248+
249+ fn reverse (mut x : i32 ) -> i32 {
250+ let mut y = 0 ;
251+ while x > 0 {
252+ y = y * 10 + x % 10 ;
253+ x /= 10 ;
254+ }
255+ y
256+ }
257+
258+ for (i , & v ) in nums . iter (). enumerate () {
259+ if let Some (& j ) = pos . get (& v ) {
260+ ans = ans . min (i as i32 - j );
261+ }
262+ pos . insert (reverse (v ), i as i32 );
263+ }
264+
265+ if ans > n as i32 { - 1 } else { ans }
266+ }
267+ }
268+ ```
269+
238270<!-- tabs: end -->
239271
240272<!-- solution: end -->
Original file line number Diff line number Diff line change 1+ use std:: collections:: HashMap ;
2+
3+ impl Solution {
4+ pub fn min_mirror_pair_distance ( nums : Vec < i32 > ) -> i32 {
5+ let n = nums. len ( ) ;
6+ let mut ans = n as i32 + 1 ;
7+ let mut pos: HashMap < i32 , i32 > = HashMap :: new ( ) ;
8+
9+ fn reverse ( mut x : i32 ) -> i32 {
10+ let mut y = 0 ;
11+ while x > 0 {
12+ y = y * 10 + x % 10 ;
13+ x /= 10 ;
14+ }
15+ y
16+ }
17+
18+ for ( i, & v) in nums. iter ( ) . enumerate ( ) {
19+ if let Some ( & j) = pos. get ( & v) {
20+ ans = ans. min ( i as i32 - j) ;
21+ }
22+ pos. insert ( reverse ( v) , i as i32 ) ;
23+ }
24+
25+ if ans > n as i32 { -1 } else { ans }
26+ }
27+ }
You can’t perform that action at this time.
0 commit comments