Java
public class Solution {
public int numberOfBoomerangs(int[][] points) {
int count=0;
for(int i=0;i<points.length;i++)
{
Map<Integer,Integer> distance=new HashMap<>();
for(int j=0;j<points.length;j++)
{
int dx=points[i][0]-points[j][0];
int dy=points[i][1]-points[j][1];
int tmp=dx*dx+dy*dy;
if(distance.containsKey(tmp))
{
int m=distance.get(tmp)+1;
distance.put(tmp,m);
}
else
distance.put(tmp,1);
}
for(int key:distance.keySet())
{
int n=distance.get(key);
if(n>1)
{
count+=n*(n-1);
}
}
}
return count;
}
}
最优解,方法一样,写得更简练
Javascript
/**
* @param {number[][]} points
* @return {number}
*/
var numberOfBoomerangs = function(points) {
let res = 0;
points.forEach(p1 => {
const map = {};
points.forEach(p2 => {
const dist = Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);
res += (map[dist] || 0) * 2;
map[dist] = (map[dist] || 0) + 1;
});
});
return res;
};
网友评论