Tuples with Same Product
给一个数组, 里面的数字不同, 求多少种a*b=c*d, abcd都是数组的数字, 但是不相同.
算下乘积的频率即可, 答案是n*(n-1),从频率中任意选2个的个数, 然后再乘以4, 4种互换可能.
class Solution {
public int tupleSameProduct(int[] nums) {
Map<Integer, Integer> f = new HashMap<>();
for(int i = 0; i < nums.length; i++) {
for(int j = i + 1; j < nums.length; j++) {
f.put(nums[i] * nums[j], f.getOrDefault(nums[i] * nums[j], 0) + 1);
}
}
int res = 0;
for(Map.Entry<Integer, Integer> m : f.entrySet()){
int n = m.getValue();
res += (n) * (n - 1) * 4;
}
return res;
}
}