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

447. 回旋镖的数量

LeetCode 447 回旋镖的数量[Map] HERODING的LeetCode之路

447-回旋镖的数量

LeetCode 678. 有效的括号字符串(贪心,动规) / 4. 寻找两个正序数组的中位数(二分,关键题) / 447. 回旋镖的数量

447. 回旋镖的数量