1577. Number of Ways Where Square of Number Is Equal to Product of Two Numbers (Medium) - TengnanYao/daily_leetcode GitHub Wiki

class Solution(object):
    def numTriplets(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: int
        """
        n1, n2 = len(nums1), len(nums2)
        h1, h2 = {}, {}
        result = 0
        for i in range(n1):
            for j in range(i + 1, n1):
                p = nums1[i] * nums1[j]
                h1[p] = h1.get(p, 0) + 1
        for num in nums2:
            p = num * num
            if h1.get(p):
                result += h1[p]
        for i in range(n2):
            for j in range(i + 1, n2):
                p = nums2[i] * nums2[j]
                h2[p] = h2.get(p, 0) + 1
        for num in nums1:
            p = num * num
            if h2.get(p):
                result += h2[p]
        return result