leetcode中等447回旋镖的数量
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等447回旋镖的数量相关的知识,希望对你有一定的参考价值。
思路:遍历+hash
对于一个点p,假设3个点到它距离相同,那一共能产生3 * 2组回旋镖;m个点到它距离相同,那一共能产生m * (m-1)组回旋镖。
用hash记录每个距离出现的次数,累加即可。
class Solution:
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
ans = 0
for p in points:
hash = {}
for q in points:
dis = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])
hash[dis]=hash.get(dis,0)+1
for m in hash.values():
ans += m * (m - 1)
return ans
class Solution {
public int numberOfBoomerangs(int[][] points) {
int res=0;
for(int[] p : points){
Map<Integer,Integer>hash=new HashMap<>();
for(int[] q :points){
int dis=(p[0]-q[0])*(p[0]-q[0])+(p[1]-q[1])*(p[1]-q[1]);
hash.put(dis,hash.getOrDefault(dis,0)+1);
}
for(int m :hash.values()){
res+=m*(m-1);
}
}
return res;
}
}
以上是关于leetcode中等447回旋镖的数量的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—447. 回旋镖的数量( 哈希表)—day37
LeetCode 447 回旋镖的数量[Map] HERODING的LeetCode之路
LeetCode 678. 有效的括号字符串(贪心,动规) / 4. 寻找两个正序数组的中位数(二分,关键题) / 447. 回旋镖的数量