参考文章
思路:
这道题其实跟做的上一道题《两数之和》有点相像,只是视为将前两个数组的所有每对元素的和作为一部分,另外两个数组的所有每对元素的和作为另一部分。在《两数之和》中Map存储的是下标,这道题不需要下标,改为存储这个数在两个数组每对元素的和中出现的次数即可。
本题Java代码
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
Map<Integer, Integer> map = new HashMap<>();
for (int i : nums1) {
for (int j : nums2) {
int tmp = i + j;
if (map.containsKey(tmp)) {
map.put(tmp, map.get(tmp) + 1);
} else {
map.put(tmp, 1);
}
}
}
int ans = 0;
for (int i : nums3) {
for (int j : nums4) {
int tmp = 0 - i - j;
if (map.containsKey(tmp)) {
ans += map.get(tmp);
}
}
}
return ans;
}
}