思路:分治,变成两数相加。前两个放一起,后两个放一起。两个for,前两个数组的和放进map,键是和,值是出现次数。然后遍历后两个,在map中找是不是存在0-(c +d)。存在,就把这个value加进const。
int fourSumCount(vector<int> &nums1, vector<int> &nums2, vector<int> &nums3, vector<int> &nums4) {
unordered_map<int, int> map;
for (int i:nums1) {
for (int j : nums2) {
map[i + j]++;
}
}
int count = 0;
for (int i :nums3) {
for (int j:nums4) {
if(map.find(0 -(i+j)) != map.end()) {
count+= map[0 -(i+j)]; //这里是加上map[0-(i+j)]而不是++,因为重复的也算
}
}
}
return count;
}