示例:
输入:
[[0,0],[1,0],[2,0]]
输出:
2
解释:
两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]
n个相同的距离有n*(n-1)个,n+1个相同距离有n*(n+1)个,n增加1,结果增加2*n:
class Solution:
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
dist_dict = {} # 相同距离出现的次数
res = 0
for i in range(len(points)):
for j in range(len(points)):
if i != j:
dist = (points[i][0]-points[j][0])**2 + (points[i][1]-points[j][1])**2
if dist not in dist_dict:
dist_dict[dist] = 1
else:
res += 2*dist_dict[dist] # 如果数量增加1,结果增加2n
dist_dict[dist] += 1
dist_dict = {}
return res