每日一题 1726. 同积元组(中等,计数)

在这里插入图片描述

  1. 直接统计数组中的数字两两组合可以得到的乘积
  2. 求将相同乘积的组合再两两组合的数量
  3. 最后由于abcd的值可以互换,每一个组合通过呼唤位置可以得到8种不同的组合,所以最后乘以8
class Solution:
    def tupleSameProduct(self, nums: List[int]) -> int:
        d = defaultdict(int)
        l = len(nums)
        for i in range(l):
            for j in range(i + 1, l):
                d[nums[i] * nums[j]] += 1

        return sum(n*(n - 1)//2 if n > 1 else 0 for n in d.values())*8

涉及到计数的,Counter就是必手动计数快一点,这涉及到 collection中的Counter在调用时使用C库有关

你可能感兴趣的:(用Python刷力扣,python,leetcode,算法)