美文网首页
64. LeetCode 447. 回旋镖的数量.

64. LeetCode 447. 回旋镖的数量.

作者: 月牙眼的楼下小黑 | 来源:发表于2019-02-15 21:16 被阅读0次
  • 标签: 哈希表
  • 难度: 中等

  • 题目描述
  • 我的解法

遍历每个点,计算其他点到自身的距离,得到一个二维矩阵 dist。 对 dist 每行的值用字典计数, 若计数值 val 大于等于 2, 则结果数加上 A_{val}^{2} . 这么暴力的解法击败了 0 \% 的用户。

class Solution(object):
    def numberOfBoomerangs(self, points):
        """
        :type points: List[List[int]]
        :rtype: int
        """
        n = len(points)
        dist = [[0]*len(points) for _ in range(n)]
        for i in range(n):
            for j in range(n):
                dx = points[i][0] - points[j][0]
                dy = points[i][1] - points[j][1]
                dist[i][j] = dx**2 + dy**2   
        result = 0
        for i in range(n):
            ctr = {}
            for j in range(n):
                if ctr.get(dist[i][j], 0) == 0:
                    ctr[dist[i][j]] = 1
                else:
                    ctr[dist[i][j]] += 1
            for key, val in ctr.items():
                num = 1
                if val >= 2:
                    for i in range(val - 1, val + 1):
                        num *= i
                    result += num
        return result

  • 其他解法

暂略。

相关文章

网友评论

      本文标题:64. LeetCode 447. 回旋镖的数量.

      本文链接:https://www.haomeiwen.com/subject/alfveqtx.html