主页 > 手机  > 

leecode刷题感悟--哈希表

leecode刷题感悟--哈希表

1726. 同积元组 - 力扣(LeetCode)1726. 同积元组 - 给你一个由 不同 正整数组成的数组 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) , (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 <= nums.length <= 1000 * 1 <= nums[i] <= 104 * nums 中的所有元素 互不相同 leetcode /problems/tuple-with-same-product/

class Solution { public: int tupleSameProduct(vector<int>& nums) { int n = nums.size(); int ans = 0; unordered_map<int,int> cnt; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { cnt[nums[i] * nums[j]]++; } } for (auto &[k,v] : cnt) { ans += v*(v-1)*4; } return ans; } };

本质上就是简单的排列组合。

标签:

leecode刷题感悟--哈希表由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“leecode刷题感悟--哈希表