本题思路参考代码随想录:
#include <iostream>
#include <unordered_set>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
class Solution
{
public:
int fourSumCount(vector<int> &nums1, vector<int> &nums2, vector<int> &nums3, vector<int> &nums4)
{
int res = 0;
unordered_map<int, int> store;
for (int i = 0; i < nums1.size(); i++)
for (int j = 0; j < nums2.size(); j++)
store[nums1[i] + nums2[j]]++;
for (int i = 0; i < nums3.size(); i++)
for (int j = 0; j < nums4.size(); j++)
{
int y = 0 - (nums3[i] + nums4[j]);
if (store.find(y) != store.end())
{
res=res+store.find(y)->second;
}
}
return res;
}
};
int main()
{
// vector<int> nums1={1,2};
// vector<int> nums2={-2,-1};
// vector<int> nums3={-1,2};
// vector<int> nums4={0,2};
vector<int> nums1 = {0, 1, -1};
vector<int> nums2 = {-1, 1, 0};
vector<int> nums3 = {0, 0, 1};
vector<int> nums4 = {-1, 1, 1};
Solution a;
cout << a.fourSumCount(nums1, nums2, nums3, nums4);
return 0;
}