题意:给出平面上的n个点,求出元组(i,j,k)的个数,其中元组满足i与j的距离与i与k距离相等,与(i,j,k)顺序有关
思路:以一个点为起点,看其它点到该点的距离及具有一样距离的个数。在统计元组个数时,只要从一样距离的个数中任先两个排列
代码如下:
public class Solution
{
public int numberOfBoomerangs(int[][] points)
{
int ans = 0;
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < points.length; i++)
{
for (int j = 0; j < points.length; j++)
{
if (i == j) continue;
int dis = (int)Math.pow(points[i][0] - points[j][0], 2) + (int)Math.pow(points[i][1] - points[j][1], 2);
map.put(dis, map.getOrDefault(dis, 0) + 1);
}
for(Integer key: map.keySet())
{
int val = map.get(key);
if (val > 1)
{
ans += val * (val - 1);
}
}
map.clear();
}
return ans;
}
}