原题链接:https://leetcode.cn/problems/tuple-with-same-product/ 解法1:哈希表记数 + 排列组合求解 12345678910111213141516171819202122232425262728293031/* 哈希 + 排列组合 hash记录乘积出现的次数 -> 乘积由两个数相乘构成 -> 出现两次相同的乘积证明有四个数符合题目要求 -> 出现n次 则只需从n对中任意选两对进行组合即可C(2,n) -> 又因为根据题意四元组内的数顺序不同也是可以算是一种组合 A(2,4) */class Solution {public: int tupleSameProduct(vector<int>& nums) { int n = nums.size(); // 乘积 -> 乘积出现的次数 unordered_map<int,int>hash; for(int i = 0 ; i < n ; i++){ for(int j = i + 1 ; j < n ; j++){ hash[nums[i] * nums[j]]++; } } int ans = 0; for(auto& [k,v] : hash){ if(v <= 1){ continue; } // v dsa ans += v*(v - 1) / 2 * 8; } return ans; }};