四数相加

gaishuobulao / 2023-05-03 / 原文

题目:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。

 

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        unordered_map<int,int> m;
        for(int a:nums1)//a并不是等同于i,而是等同于nums[i];
        {
            for(int b:nums2)
            {
                m[a+b]++;
            }
        }

        int count=0;
        for(int c:nums3)
        {
            for(int d:nums4)
            {
                if(m.find(0-(c+d))!=m.end())
                {
                    count += m[0-(c+d)];//value值记录次数
                }
            }
        }

        return count;

    }
};