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
// @Title: 回旋镖的数量 (Number of Boomerangs)
// @Author: 15816537946@163.com
// @Date: 2021-09-13 23:58:03
// @Runtime: 148 ms
// @Memory: 7.1 MB
func numberOfBoomerangs(points [][]int) int {
	res := 0
	for i := 0; i < len(points); i++ {
		dict := make(map[int]int)
		for j := 0; j < len(points); j++ {
			d := dis(points[i], points[j])
			if v, ok := dict[d]; !ok {
				dict[d]++
			} else {
				res += 2 * v
				dict[d]++
			}
		}
	}
	return res
}

func dis(a []int, b []int) int {
	x := a[0] - b[0]
	y := a[1] - b[1]
	return x*x + y*y
}