题目描述
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
本题思路
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3,
vector<int>& nums4) {
unordered_map<int, int> map;
for (int a : nums1) {
for (int b : nums2) {
map[a + b]++;
}
}
int result = 0;
for (int c : nums3) {
for (int d : nums4) {
if (map.find(-(c + d)) != map.end()) {
result += map[-c - d];
}
}
}
return result;
}
};
总体想法和两数之和类似,先把前两个数组不同组合如两个数组都为n即有n*n种数据元素之和,不排除重复的可能.
对不同的数据元素之和进行统计,key为两元素之和,value为同一元素之和出现的次数(分组操作)。后两组直接在上两组的操作之上进行查找,每查找到一次元素之和为零就计数。
进行完分组操作后就类似于两数之和,只不过是target = 0.