解题思路
使用哈希表来解决。以下是详细思路:
首先,我们遍历数组nums1和nums2,计算两数之和,并将结果存储在哈希表countAB中,同时记录每个和出现的次数。
然后,我们再次遍历数组nums3和nums4,计算两数之和,并在哈希表countAB中查找相反数的和,同时累加匹配的次数。
最后,返回满足条件的次数作为结果。
func fourSumCount(nums1 []int, nums2 []int, nums3 []int, nums4 []int) int {
countAB := make(map[int]int)
for _, a := range nums1 {
for _, b := range nums2 {
countAB[a+b]++
}
}
res := 0
for _, c := range nums3 {
for _, d := range nums4 {
if count, ok := countAB[-c-d]; ok {
res += count
}
}
}
return res
}