方法:哈希法
思路:前两个数组两两相加,存入map,元素存在,初始化次数为1。元素不存在,对应元素次数加1。用0减去剩下两个数组两两相加的结果,得到在map中需要寻找的值。找到了,sum+次数。
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
HashMap<Integer,Integer> map=new HashMap<>();
int n=nums1.length;
int t=0;
int sum=0;
//两个数组一起
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
//计算从每个数组取一个元素相加的结果
t=nums1[i]+nums2[j];
//不存在,添加
if(!map.containsKey(t))
map.put(t,1);
//存在,次数加一
else
map.put(t,map.get(t)+1);
}
}
//后两个数组
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
//求得要在map里找的元素
t=0-(nums3[i]+nums4[j]);
if(map.containsKey(t))
//加上元素的个数得到符合条件的元组的个数
sum=sum+map.get(t);
}
}
return sum;
}
}