【leetcode 简单】 第一百零七题 回旋镖的数量

给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。

找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。

示例:

输入:
[[0,0],[1,0],[2,0]]

输出:
2

解释:
两个回旋镖为 [[1,0],[0,0],[2,0]][[1,0],[2,0],[0,0]]


class Solution:
    def numberOfBoomerangs(self, points):
        """
        :type points: List[List[int]]
        :rtype: int
        """
        
        tmp = 0
        points_len = len(points)
        for i in range(points_len):
            Dict = {}
            for j in range(points_len):
                if j == i:
                    continue
                key = str(pow(points[i][0] - points[j][0], 2) + pow(points[i][1] - points[j][1], 2))
                
                if key in Dict:
                    Dict[key] +=1
                else:
                    Dict[key] = 1
            for p in Dict:
                if Dict[p] > 1:
                    tmp += Dict[p] * (Dict[p] -1)
        return tmp

 

posted @ 2018-08-29 22:50  丁壮  阅读(290)  评论(0编辑  收藏  举报