454.四数相加 II
caution
思路
将 nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 变换一下,得:
-(nums1[i] + nums[j]) == nums3[k] + nums4[l]
可以先用哈希表计算 -(nums1[i] + nums[j]) 的个数,然后累加 hash[nums3[k] + nums4[l]] 即可。
代码
class Solution {
    unordered_map<int, int> m;
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        m.clear();
        int ans = 0;
        for (int i = 0; i < nums1.size(); i++) {
            for (int j = 0; j < nums2.size(); j++) {
                m[ -(nums1[i] + nums2[j]) ]++;
            }
        }
        for (int i = 0; i < nums3.size(); i++) {
            for (int j = 0; j < nums4.size(); j++) {
                ans += m[ (nums3[i] + nums4[j]) ];
            }
        }
        return ans;
    }
};