LeetCode刷题日记(1726. 同积元组)

遍历数组 nums,计算所有可能的乘积并存储在列表 mul 中。对于每个乘积,我们可以选择任意两个不同的位置作为 a 和 b,并选择另外两个不同的位置作为 c 和 d,这样总共有 value * (value - 1) 种组合,再乘以 4 是因为每个组合有 4 种不同的排列方式。

"""
给你一个由不同正整数组成的数组nums ,
请你返回满足 a * b = c * d 的元组 (a, b, c, d) 的数量。
其中 a、b、c 和 d 都是 nums 中的元素,且 a != b != c != d 。
"""
from typing import List
import collections


class Solution:
    def tupleSameProduct(self, nums: List[int]) -> int:
        mul = []
        n = len(nums)
        for x in range(n):
            for y in range(x, n):
                if x != y:
                    mul.append(nums[x] * nums[y])

        count_dict = collections.Counter(mul)

        ret = 0
        for value in count_dict.values():
                ret += value * (value - 1) *4
        return ret

你可能感兴趣的:(leetcode,算法,python)