四数组相加II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main

import "fmt"

func fourSumCount(A []int, B []int, C []int, D []int) int {
sumCount := make(map[int]int)

// 统计A和B数组中元素的和的组合
for _, a := range A {
for _, b := range B {
sumCount[a+b]++
}
}

result := 0

// 遍历C和D数组,查找和的相反数在sumCount中的数量
for _, c := range C {
for _, d := range D {
result += sumCount[-(c + d)]
}
}

return result
}

func main() {
A := []int{1, 2}
B := []int{-2, -1}
C := []int{-1, 2}
D := []int{0, 2}

count := fourSumCount(A, B, C, D)

fmt.Printf("满足条件的组合数量是:%d\n", count)
}