C++描述 LeetCode 5243. 同积元组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++描述 LeetCode 5243. 同积元组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1629字,纯文字阅读大概需要3分钟。
内容图文
C++描述 LeetCode 5243. 同积元组
??大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页
本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!!
若需联系博主,可以联系本人微信:qiguanjie2015
题目
给你一个由 不同 正整数组成的数组 nums
,请你返回满足 a * b = c * d
的元组 (a, b, c, d)
的数量。其中 a
、b
、c
和 d
都是 nums
中的元素,且 a != b != c != d
。
示例 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) , (3,4,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,4,5)
(4,5,2,10) , (4,5,10,2) , (5,4,2,10) , (5,4,10,2)
示例 3:
输入:nums = [2,3,4,6,8,12]
输出:40
示例 4:
输入:nums = [2,3,5,7]
输出:0
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 104
nums
中的所有元素 互不相同
题解思路
找出所有乘积相同的乘数对,并记录数量。每N对乘数对可以形成Cn2组2对的乘数对,每2对乘积相同的乘数对可以形成8中不同的排列,所以我们只需要想找到的乘积相同的乘数对进行排列组合并且*8后进行累加即可。
算法实现
class Solution {
public:
int tupleSameProduct(vector<int>& nums) {
int len = nums.size(),ans = 0;
unordered_map<int,int> hash;
for(int i = 0 ; i < len ; i++){
for(int j = i+1 ; j < len ; j++){
hash[nums[i] * nums[j]]++;
}
}
for(auto &[key,value]:hash){
ans += value * (value-1) / 2 * 8;
}
return ans;
}
};
内容总结
以上是互联网集市为您收集整理的C++描述 LeetCode 5243. 同积元组全部内容,希望文章能够帮你解决C++描述 LeetCode 5243. 同积元组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。