Number of Boomerangs
Thoughts
Code
class Solution {
private int getDistance(int[] a, int[] b) {
int dx = a[0] - b[0];
int dy = a[1] - b[1];
return dx*dx + dy*dy;
}
public int numberOfBoomerangs(int[][] points) {
Map[] maps = new Map[points.length];
for (int i = 0; i < points.length; i++) {
maps[i] = new HashMap<Integer, Integer>();
Map<Integer, Integer> map = maps[i];
for (int j = 0; j < points.length; j++) {
if (j == i) {
continue;
}
int distance = getDistance(points[i], points[j]);
if (!map.containsKey(distance)) {
map.put(distance, 1);
} else {
map.put(distance, (int)map.get(distance) + 1);
}
}
}
int res = 0;
for (Map<Integer, Integer> map : maps) {
for (Integer dis : map.keySet()) {
if (map.get(dis) > 1) {
res += map.get(dis) * (map.get(dis) - 1);
}
}
}
return res;
}
}Analysis
Ver.2
Last updated