Post

4139 Minimum Absolute Distance Between Mirror Pairs

4139 Minimum Absolute Distance Between Mirror Pairs

Minimum Absolute Distance Between Mirror Pairs image

You are given an integer array nums.

A mirror pair is a pair of indices (i, j) such that:

1
2
0 <= i < j < nums.length, and
reverse(nums[i]) == nums[j], where reverse(x) denotes the integer formed by reversing the digits of x. Leading zeros are omitted after reversing, for example reverse(120) = 21.

Return the minimum absolute distance between the indices of any mirror pair. The absolute distance between indices i and j is abs(i - j).

If no mirror pair exists, return -1.

 

Example 1:

Input: nums = [12,21,45,33,54]

Output: 1

Explanation:

The mirror pairs are:

1
2
(0, 1) since reverse(nums[0]) = reverse(12) = 21 = nums[1], giving an absolute distance abs(0 - 1) = 1.
(2, 4) since reverse(nums[2]) = reverse(45) = 54 = nums[4], giving an absolute distance abs(2 - 4) = 2.

The minimum absolute distance among all pairs is 1.

Example 2:

Input: nums = [120,21]

Output: 1

Explanation:

There is only one mirror pair (0, 1) since reverse(nums[0]) = reverse(120) = 21 = nums[1].

The minimum absolute distance is 1.

Example 3:

Input: nums = [21,120]

Output: -1

Explanation:

There are no mirror pairs in the array.

 

Constraints:

1
2
1 <= nums.length <= 105
1 <= nums[i] <= 109​​​​​​​
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

class Solution:
    def minMirrorPairDistance(self, nums: List[int]) -> int:
        mp = {}
        res = 1000000

        for i, k in enumerate(nums):
            t = list(str(k))
            t.reverse()
            t = int("".join(t))

            if t % 10 == 0:
                t = t // 10
            
            if k in mp:
                res = min(res, abs(mp[k] - i))
                mp[t] = i
            else:
                mp[t] = i
            #print(t, mp, res, k)
        return res if res < 1000000 else -1

        



This post is licensed under CC BY 4.0 by the author.