1726. 同积元组
  2ByFsHD6kzN2 2023年11月02日 22 0




1726. 同积元组

  • 题目
  • 方法-【哈希】& 题目特征-【出现相同乘积】



 


题目

题目链接:https://leetcode.cn/problems/tuple-with-same-product/description/

方法-【哈希】& 题目特征-【出现相同乘积】

如果用枚举的方式,那我们需要4个指针代表a、b、c、d,去模拟这个过程,时间复杂度太高了。

题目要找的是 1726. 同积元组_算法,即出现相同乘积,需要同时用到统计、查找乘积。

哈希的作用,就是高效统计和查找。

class Solution {
public:
    int tupleSameProduct(std::vector<int>& nums) {
    	int result = 0;
   		std::unordered_map<int, int> productCount;
    	for (int i = 0; i < nums.size(); i++) 
        	for (int j = i + 1; j < nums.size(); j++) {
            	int prod = nums[i] * nums[j];   
            	result += 8 * productCount[prod];   // 每个乘积对可以形成 8 个不同的元组
            	productCount[prod]++;
        	}
    	return result;
    }
};

当数组 nums = [2, 3, 4, 6] 时,让我们来看一下具体的例子。

首先,我们需要遍历数组 nums,外层循环遍历 a 和 b,内层循环遍历 c 和 d。

  1. 当 a = 2,b = 3 时,计算乘积 prod = a * b = 2 * 3 = 6。此时,我们在哈希表中统计乘积 6 的出现次数为 0,然后将其加入哈希表并初始化出现次数为 1。
  2. 继续遍历数组 nums,当 a = 2,b = 4 时,计算乘积 prod = a * b = 2 * 4 = 8。在哈希表中统计乘积 8 的出现次数为 0,将其加入哈希表并初始化出现次数为 1。
  3. 继续遍历数组 nums,当 a = 2,b = 6 时,计算乘积 prod = a * b = 2 * 6 = 12。在哈希表中统计乘积 12 的出现次数为 0,将其加入哈希表并初始化出现次数为 1。
  4. 继续遍历数组 nums,当 a = 3,b = 4 时,计算乘积 prod = a * b = 3 * 4 = 12。在哈希表中统计乘积 12 的出现次数为 1,将其累加到结果 result 中:result += 8 * 1 = 8。
  5. 继续遍历数组 nums,当 a = 3,b = 6 时,计算乘积 prod = a * b = 3 * 6 = 18。在哈希表中统计乘积 18 的出现次数为 0,将其加入哈希表并初始化出现次数为 1。
  6. 继续遍历数组 nums,当 a = 4,b = 6 时,计算乘积 prod = a * b = 4 * 6 = 24。在哈希表中统计乘积 24 的出现次数为 0,将其加入哈希表并初始化出现次数为 1。
  7. 最终,返回结果 result = 8。

在这个例子中,我们找到了一个满足条件的元组 (2, 3, 4, 6),其中 a * b = c * d,且 a、b、c、d 都是 nums 中的元素。并且根据乘积出现的次数,我们将结果 result 累加了 8 次。
 


每个乘积对可以形成 8 个不同的元组,如 (2,6,3,4),26 = 34 = 12。

通过换位置,就能得到 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)


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  1BnnW8rtw7M9   2023年12月22日   119   0   0 算法i++i++mathMath算法
2ByFsHD6kzN2