1726. 同积元组

2023-10-19 13:12
文章标签 元组 同积 1726

本文主要是介绍1726. 同积元组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1726. 同积元组

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

 


题目

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

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

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

题目要找的是 a ∗ b = c ∗ d a * b = c * d ab=cd,即出现相同乘积,需要同时用到统计、查找乘积。

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

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)

这篇关于1726. 同积元组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240017

相关文章

erlang学习:用ETS和DETS存储数据3,保存元组到磁盘

学习内容 ETS表把元组保存在内存里,而DETS提供了把Erlang元组保存到磁盘上的方法。DETS的最大文件大小是2GB。DETS文件必须先打开才能使用,用完后还应该正确关闭。如果没有正确关闭,它们就会在下次打开时自动进行修复。因为修复可能会花很长一段时间,所以先正确关闭它们再结束程序是很重要的。 DETS表有着和ETS表不同的共享属性。DETS表在打开时必须赋予一个全局名称。如果两个或更多

Python 元组详解

Python 元组: Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。 如下实例: tup1 = ('physics', 'chemistry', 1997, 2000);tup2 = (1, 2, 3, 4, 5 );tup3 = "a", "b", "c", "d";#

python关于序列中的列表和元组总结

序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始)。典型的序列包括列表、字符串和元组。其中、列表是可变的(可以进行修改),而元组和字符串是不可以改变的(一旦创建了就是固定的)。通过分片操作可以访问序列的一部分,其中分片需要连个索引号来指定出分片的起始和结束位置。想要改变列表,则要对相应的位置进行赋值操作,或者说使用赋值语句重写整个分片。 **成员资格:**in操作可以检查一个值时候存

Day 7:1726 同积元组

1726 同积元组 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 1726 同积元组 2. 解题思路 假设存在 n 组数,对于其中任意两组数 (a, b) 和(c, d),均满足 a * b = c * d 的条件,则这样的组合一共有 C ( n , 2 ) = n × ( n − 1 ) 2 C(n, 2) = \frac{n \times (n - 1)}

Python中的元组:解锁数据安全与效率的秘密武器

引言 元组,一种有序的数据集合,它允许我们存储多个项作为一个单一的实体。与列表相比,元组最显著的特点就是其不可变性——一旦创建,就不能修改。这一特性使得元组非常适合用于那些需要固定不变的数据集合场景,如配置信息、日期时间等。此外,由于元组的不可变性,Python能够在内存管理上做出更优化的决策,从而提高程序执行效率。 基础语法介绍 在Python中定义一个元组非常简单,只需要将元素放在圆括号

一篇搞懂C++ STL 元组std::tuple

文章目录 前言什么是 `std::tuple`为什么要使用 `std::tuple``std::tuple` 的构造函数和操作函数1. 构造函数2. 操作函数 make_tuple函数`std::make_tuple` 的功能函数原型参数返回值使用示例`std::make_tuple` 的特点 示例代码总结 前言 在 C++ 中,元组(Tuple)是一种用于将多个不同类型的值

【Python知识宝库】掌握列表与元组,轻松处理数据集合

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 在Python编程中,列表(List)和元组(Tuple)是两种非常基础且强大的数据结构。它们用于存储序列数据,可以包含不同类型的元素。理解和熟练使用列表与元组,可以帮助我们更轻松地处理数据集合。本文将深入探讨列表与元组的特性、

Python青少年简明教程:列表(List)、元组(tuple)和字典(dict)

Python青少年简明教程:列表(List)、元组(tuple)和字典(dict) 在Python中,列表(List)、元组(Tuple)和字典(Dict)既是常用的数据类型,也是常用的数据结构。 【数据类型:在编程语言中,数据类型定义了一个变量的存储方式以及可以对该变量执行的操作。从 Python 语言的角度来看,Python 中的列表、元组和字典都属于数据类型。 数据结构:数据结构是

python3 list、tuple(元组)、str之间的相互转换

list()方法是把字符串str或元组转成数组tuple()方法是把字符串str或数组转成元组 >>> s = "xxxxx">>> list(s)['x', 'x', 'x', 'x', 'x']>>> tuple(s)('x', 'x', 'x', 'x', 'x')>>> tuple(list(s))('x', 'x', 'x', 'x', 'x')>>> list(tu

python从列表元素中查找最小的元组坐标

问题描述         已知一个python列表,列表中有若干元素,每一个元素是一个类似(x1,y1,x2,y2)元组数据,其中想x1和x2是两个点的横坐标,y1和y2是2个点的纵坐标,请使用代码实现找出该列表中x1最小的元素。 分析及解决         你可以使用Python的内置函数min结合一个自定义的键函数来找出列表中x1最小的元素。下面是一个示例代码: # 示例列表tupl