原题链接https://leetcode.cn/problems/4sum-ii/解题思路:
- 首先将四个数组进行分组,nums1,nums2一组,nums3,.nums4一组。
- 使用双重for循环遍历nums1,nums2,计算nums1[i]+nums2[j]的值存入哈希表作为key,nums1[i]+nums2[j]出现的次数作为哈希表的value。
- 同样使用双重for循环对nums3,nums4遍历,当遍历到nums3[i]+nums4[j]时,如果-(nums3[i]+nums4[j])在哈希表中出现,则将value累加到结果中。
- 最后返回结果。
附上代码
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
Map<Integer,Integer> count12 =new HashMap<>();
for (int i : nums1) {
for (int j : nums2) {
int key =i+j;
count12.put(key,count12.getOrDefault(key,0)+1);
}
}
int res=0;
for (int i : nums3) {
for (int j : nums4) {
int key=i+j;
if (count12.containsKey(-key)){
res+=count12.get(-key);
}
}
}
return res;
}