Leetcode——回旋镖
Posted Yawn,
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——回旋镖相关的知识,希望对你有一定的参考价值。
1. 回旋镖
(1)Hash表
class Solution {
public int numberOfBoomerangs(int[][] points) {
int len = points.length;
int res = 0;
for (int i = 0; i < len; i++) {
Map<Integer, Integer> map = new HashMap<>();
for (int j = 0; j < len; j++) {
//剔除掉相同点
if (i == j)
continue;
int x = points[i][0] - points[j][0];
int y = points[i][1] - points[j][1];
//求距离, (x1 - x2)平方 - (y1 - y2)平方
int dist = x*x + y*y;
map.put(dist, map.getOrDefault(dist, 0) + 1);
}
//统计回旋镖数量,逐次统计回旋镖数量
for (int dist : map.keySet()) {
int cnt = map.get(dist);
res += cnt * (cnt - 1);
}
}
return res;
}
}
以上是关于Leetcode——回旋镖的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1037.有效的回旋镖:斜率 - 一行解决