解题思路


动图版:

实现代码


class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        Map<Integer, Integer> map = new HashMap<>(); // key: 两数之和 value: 出现次数
        for (int i : nums1) {
            for (int j : nums2) {
                int key = i+j;
                map.put(key, map.getOrDefault(key, 0) + 1);
            }
        }
        int ans = 0;
        for (int i : nums3) {
            for (int j : nums4) {
                // 如果包含 -i-j 也就是 nums1 nums2 之和的倒数
                if (map.containsKey(-i-j)) ans += map.get(-i-j); // 将计数累加
            }
        }
        return ans;
    }
}