1726. 同积元组
大约 2 分钟
1726. 同积元组
- 标签:数组、哈希表
- 难度:中等
题目链接
题目大意
描述:给定一个由不同正整数组成的数组 。
要求:返回满足 的元组 的数量。其中 、、 和 都是 中的元素,且 。
说明:
- 。
- 。
- 中的所有元素互不相同。
示例:
- 示例 1:
输入:nums = [2,3,4,6]
输出:8
解释:存在 8 个满足题意的元组:
(2,6,3,4) , (2,6,4,3) , (6,2,3,4) , (6,2,4,3)
(3,4,2,6) , (4,3,2,6) , (3,4,6,2) , (4,3,6,2)
- 示例 2:
输入:nums = [1,2,4,5,10]
输出:16
解释:存在 16 个满足题意的元组:
(1,10,2,5) , (1,10,5,2) , (10,1,2,5) , (10,1,5,2)
(2,5,1,10) , (2,5,10,1) , (5,2,1,10) , (5,2,10,1)
(2,10,4,5) , (2,10,5,4) , (10,2,4,5) , (10,2,5,4)
(4,5,2,10) , (4,5,10,2) , (5,4,2,10) , (5,4,10,2)
解题思路
思路 1:哈希表 + 数学
- 二重循环遍历数组 ,使用哈希表 记录下所有不同 的结果。
- 因为满足 的元组 可以按照不同顺序进行组和,所以对于 个 ,就有 种组和方法。
- 遍历哈希表 中所有值 ,将不同组和的方法数累积到答案 中。
- 遍历完返回答案 。
思路 1:代码
class Solution:
def tupleSameProduct(self, nums: List[int]) -> int:
cnts = Counter()
size = len(nums)
for i in range(size):
for j in range(i + 1, size):
product = nums[i] * nums[j]
cnts[product] += 1
ans = 0
for key, value in cnts.items():
ans += value * (value - 1) * 4
return ans
思路 1:复杂度分析
- 时间复杂度:,其中 表示数组 的长度。
- 空间复杂度:。