从四个vector里找四个数成一组,使得他们的和为零,问有几个这样的组。
class Solution { public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { int len1=nums1.size(); int len2=nums2.size(); int len3=nums3.size(); int len4=nums4.size(); unordered_map<int,int> mp1; //前两个数组和为键,个数为值 unordered_map<int,int> mp2; //后两个数组的和为键,个数为值 unordered_map<int,int>::iterator it,itt; for(int i=0;i<len1;i++){ for(int j=0;j<len2;j++){ mp1[nums1[i]+nums2[j]]++; } } for(int i=0;i<len3;i++){ for(int j=0;j<len4;j++){ mp2[nums3[i]+nums4[j]]++; } } int ans=0; for(it=mp1.begin();it!=mp1.end();it++){ int a=it->second; int b=-it->first; itt=mp2.find(b); //unordered_map 中find()的复杂度是O(1) if(itt!=mp2.end()) { int c=itt->second; ans+=a*c; } } return ans; } };