← All solutions
April 17Medium

Minimum absolute distance between mirror pairs

  • Topics: Array
  • Hash Table
  • Math

Problem

You are given an integer array nums. A mirror pair is a pair of indices (i, j) such that: 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.

Solution

class Solution:
    def minMirrorPairDistance(self, nums: List[int]) -> int:
        def reverse(num):
            res = 0
            while num:
                res = res * 10 + num % 10
                num //= 10
            return res

        reversed_nums = {}
        res = float("inf")
        for i in range(len(nums)):
            if nums[i] in reversed_nums:
                res = min(res, i - reversed_nums[nums[i]])

            reversed_nums[reverse(nums[i])] = i
        return res if res != float("inf") else -1