解题思路:
使用map
四个数组两两一组
前两个数组的各个值遍历相加,和为key,出现的次数为value
后两个数组的各个值遍历相加,如果该值的负数能在map中找到(表示能抵消为0,符合题意四数之和为0),则cnt加上map中对应出现的次数value
class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {Map<Integer, Integer> map = new HashMap<>();int cnt = 0;for (int num1 : nums1) {for (int num2 : nums2) {int sum = num1 + num2;map.put(sum, map.getOrDefault(sum, 0) + 1);}}for (int num3 : nums3) {for (int num4 : nums4) {int target = 0 - (num3 + num4);if (map.containsKey(target)) cnt += map.get(target);}}return cnt;}
}