前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 447. 回旋镖的数量

Leetcode 447. 回旋镖的数量

作者头像
zhipingChen
发布2020-02-25 16:07:39
3870
发布2020-02-25 16:07:39
举报
文章被收录于专栏:编程理解

题目描述

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

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

示例 1:

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

输出: 2

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

解法

根据题意可知,数组中存在 n 个不同的点,以数组中某一个点为中心,若存在两个点到该中心点的距离相同,则存在两个回旋镖(因为考虑了回旋镖的点顺序)。

所以不妨求出数组中每个点到中心点的距离,若存在 x 个点到该中心点的距离相同,则存在 x*(x-1) 个回旋镖。

代码语言:javascript
复制
class Solution:
    def numberOfBoomerangs(self, points: List[List[int]]) -> int:
        ret=0
        d=dict()
        for x,y in points:
            for x1,y1 in points:
                dis=(x1-x)**2+(y1-y)**2
                d[dis]=d.get(dis,0)+1
            for n in d.values():
                ret+=n*(n-1)
            d.clear()
        return ret
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档