LeetCode in Kotlin

3761. Minimum Absolute Distance Between Mirror Pairs

Medium

You are given an integer array nums.

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

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:

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:

Solution

import kotlin.math.min

class Solution {
    fun minMirrorPairDistance(nums: IntArray): Int {
        var res = 100000
        var i = 0
        val seen = HashMap<Int?, Int?>()
        for (n in nums) {
            var n = n
            var r: Int
            if (seen.containsKey(n)) {
                res = min(res, i - seen[n]!!)
            }
            r = 0
            while (n > 0) {
                r = r * 10 + (n % 10)
                n /= 10
            }
            seen[r] = i++
        }

        return if (res == 100000) -1 else res
    }
}