给定平面上 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]]

思路:

①利用查找表方法,由于数据规模不超过500 ,所以可以设计一个O(n^2)的算法

②对于元组(i, j, k),要判断的是 i 和 j、i 和 k 之间的距离,所以以 i 建立查找表,以 i 到剩余点的距离为key,每有一个数该key的value就加1

③最后根据每一个距离对应的点的个数来计算输出,即,

④由于是距离作为key,所以应该避免小数的出现,因此在计算距离时省去开方操作

⑤由于点的坐标区间在 [-10000, 10000] 中,所以距离的平方不会超过int的范围

class Solution(object):

def numberOfBoomerangs(self, points):

"""

:type points: List[List[int]]

:rtype: int

"""

res = 0

for i in points:

record = dict()

for j in points: # 先初始化字典

if i != j:

record[self.dis(i, j)] = 0

for j in points:

if i != j:

record[self.dis(i, j)] = record[self.dis(i, j)] + 1

for key in record:

res = res + record[key]*(record[key] - 1)

return res

# 返回距离,避免出现小数此时使用平方值作为距离

def dis(self, pointa, pointb):

return (pointa[0] - pointb[0])*(pointa[0] - pointb[0]) + (pointa[1] - pointb[1])*(pointa[1] - pointb[1])

本文同步分享在 博客“小王曾是少年”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

回旋数字c语言数组,LeetCode 447*. 回旋镖的数量(Python)相关推荐

  1. [LeetCode] 447.回旋镖的数量(Easy)C语言题解

    题目 给定平面上 n 对不同的点,"回旋镖" 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序). 找到所有回 ...

  2. LeetCode 447. 回旋镖的数量(哈希map+组合数)

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

  3. leetcode.447 回旋镖的数量

    这道题,有几点: 1.首先固定一个点,然后求其他点到这个点的距离集合, 2.在这个距离集合中,相等距离的有m个,则回旋镖数就有组合C(m, 2) * 2个, 3.回到步骤1 有个优化的方法,在存储距离 ...

  4. 447. 回旋镖的数量

    447. 回旋镖的数量 给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] .回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的 ...

  5. 447 回旋镖的数量(暴力枚举)

    1. 问题描述: 给定平面上 n 对互不相同的点 points ,其中 points[i] = [xi, yi] .回旋镖是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i  ...

  6. 447 回旋镖的数量

    题目描述: 给定平面上 n 对不同的点,"回旋镖" 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序). 找到 ...

  7. c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  8. 「每日一题」回旋镖的数量

    这是 LeetCode 上 2021-9-13 的每日一题:「447. 回旋镖的数量」 1. 题目描述 给定平面上n对互不相同的点points,其中points[i] = [xi, yi].回旋镖是由 ...

  9. C语言数组中两个数字之间的最大差的算法(附完整源码)

    C语言数组中两个数字之间的最大差的算法 C语言数组中两个数字之间的最大差的算法完整源码(定义,实现,main函数测试) C语言数组中两个数字之间的最大差的算法完整源码(定义,实现,main函数测试) ...

最新文章

  1. 17、Java Swing Timer:计时器组件
  2. 注意Hibernate4在开发当中的一些改变
  3. 浙大计算机系可以转专业吗,求教。。浙大转专业容易吗
  4. java实现字符逆序输出
  5. operator.ne_Python operator.ne()函数与示例
  6. 你认识的有钱人,是怎么起家的?是做什么生意的?
  7. 兄弟连关于PHP培训的声明
  8. selenium+java自动化测试环境搭建mac
  9. 先进核反应堆 ——新能源概论结课作业
  10. keil软件仿真打印输出配置
  11. 【智能优化算法】多目标于分解的多目标进化算法MOEA/D算法(Matlab代码实现)
  12. h5页面制作软件html包,iH5专业H5页面制作工具网页版
  13. 纯css写图形 优惠券
  14. 游戏对战平台研究终结篇【转】
  15. 基于卷积神经网络的像素级图像融合——硕士论文阅读笔记
  16. WINDOWS优化大师揭密
  17. 学计算机好还是学数学好,大学专业学计算机好还是学数学好
  18. 系统分析与设计期末课程总结
  19. 读书笔记:收敛性 ← 随机过程
  20. (转)阿里宝宝的漫漫求职路

热门文章

  1. HyperSnap基本用法
  2. 【Vue3】vite配置css 的sourceMap ,以及文件引用配置别名
  3. 乐讯机器人高级版正式发布20140508正式版
  4. 美赞臣EDI 940仓库装运订单详解
  5. 2018年一季度总结
  6. 初识openmeetings-db
  7. 备份sybase数据库的方法
  8. VM虚拟机安装的CENTOS7系统IP自动变化的问题解决
  9. swf文件格式解析入门(文件头解析)
  10. 智慧职教云Java题库_智慧职教云课堂APPJava程序设计试题及答案