447.回旋镖的数量
题目描述
思路:暴力枚举
计算两点之间距离,用哈希表记录距离相等的点。
class Solution:
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
def distance(p1, p2):
return (p1[0]-p2[0]) * (p1[0]-p2[0]) + (p1[1]-p2[1]) * (p1[1]-p2[1])
ans = 0
for p in points:
cnts = Counter()
for q in points:
cnts[distance(p, q)] += 1
# 距离到p相等的点(某个距离)有val个,从val个任意取两个不在乎顺序为An2=n*(n-1)
for val in cnts.values():
ans += val * (val-1)
return ans