leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

min_dist_betw_3eq_elem2.py (1005B)


# 3741. Minimum Distance Between Three Equal Elements II
from typing import List

"""
you are given an integer array 'nums'. a tuple '(i, j, k)' of 3 distinct
indices is good if 'nums[i] == nums[j] == nums[k]'. the distance of a good
tuple is 'abs(i - j) + abs(j - k) + abs(k - i)' where 'abs(x)' is the
absolute value of 'x'. return an integer denoting the minimum possible
distance of a good tuple. if no good tuples exist, return -1.
"""


class Solution:
    def minimumDistance(self, nums: List[int]) -> int:
        ans = float("inf")
        nums = sorted((nums[i], i) for i in range(len(nums)))
        for i in range(len(nums) - 2):
            if nums[i][0] == nums[i + 2][0]:
                ans = min(ans, (nums[i + 2][1] - nums[i][1]) * 2)
        return ans if ans < float("inf") else -1


if __name__ == "__main__":
    obj = Solution()
    print(obj.minimumDistance(nums=[1, 2, 1, 1, 3]))
    print(obj.minimumDistance(nums=[1, 1, 2, 3, 2, 1, 2]))
    print(obj.minimumDistance(nums=[1]))