这是 LeetCode 上 2021-9-13 的每日一题:「447. 回旋镖的数量」

1. 题目描述

给定平面上n互不相同的点points,其中points[i] = [xi, yi]回旋镖是由点(i, j, k)表示的元组 ,其中ij之间的距离和ik之间的距离相等(需要考虑元组的顺序)。

返回平面上所有回旋镖的数量。

示例1:

输入:points = [[0,0],[1,0],[2,0]]
输出:2
解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]

示例2:

输入:points = [[1,1],[2,2],[3,3]]
输出:2

示例 3:

输入:points = [[1,1]]
输出:0

2. 解答

  1. 遍历points,将每个点作为顶点,计算其他点到顶点的距离,保存相同距离点的数量map
  2. 遍历每个map,若与顶点相同距离的点的个数大于1,则计算组成回旋镖的数量
  3. 一共num,其中挑2个出来,有num*(num-1)个可能
// 计算两点距离的平方
const getD = ([a1, a2], [b1, b2]) => (b1 - a1) ** 2 + (b2 - a2) ** 2;const numberOfBoomerangs = points => {if (points.length < 3) return 0;const map = {};let res = 0;points.forEach((a, i) => {// 遍历时,将每个点作为顶点map[a] = {};// 再次遍历,得到其余的点到顶点的距离points.forEach((b, j) => {// 排除与自身的点if (i !== j) {// 计算距离const d = getD(a, b);// 将距离保存map[a][d] = (map[a][d] || 0) + 1;}});// 遍历顶点mapfor (const item in map[a]) {// 与顶点相同距离的点的个数const num = map[a][item];// num>1,才能和顶点组成回旋镖// 一共num,其中挑2个出来,有num*(num-1)个可能if (num > 1) res += num * (num - 1);}});return res;
};

「每日一题」回旋镖的数量相关推荐

  1. 每日一题_447.回旋镖的数量

    每日一题_447.回旋镖的数量 leetcode 447 题目: 题意分析: 今天的题目比较简单,没有复杂的算法,主要是用空间换时间.该题是给我们平面上一系列的点,这些点都在整数格点上,然后当其中一个 ...

  2. 「每日一题」航班预订统计

    这是 LeetCode 上2021-8-31的每日一题:「1109. 航班预订统计」 1. 题目描述 这里有n个航班,它们分别从1到n进行编号. 有一份航班预订表bookings,表中第i条预订记录b ...

  3. 使用promise解决回调地狱_「每日一题」Promise 是什么?

    window.Promise 已经是 JS 的一个内置对象了. 1. Promise 有规格文档吗? 2. 你一般如何使用 Promise. ----------- 目前的 Promise 都遵循 P ...

  4. 饿饿,饭饭「每日一题」

    饿饿 饭饭 - 题目 - Daimayuan Online Judgerre 题解:经典二分「calc函数好好写就好」 AC代码: #include <iostream> #define ...

  5. vin端口是什么意思_「每日一题」什么是 Web 服务器(server)

    前端开发人员应该对 Web 开发中的基本概念有一些了解,请简述 什么是 Web 服务器 Web 服务器能做什么 -------- 首先我们来了解什么是服务器(server) 一般来说,server 有 ...

  6. 找出数组中被其他元素整除的元素_「每日一题」数组中重复的数字

    题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次.请找出数组中任意一个重复的数字. Input ...

  7. liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案

    #6006. 「网络流 24 题」试题库   题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求试卷 ...

  8. python 编程一日一练-「每日一练」巧用python生成随机数

    原标题:「每日一练」巧用python生成随机数 随机数在我们的生产和生活中有很多的应用场景,比如说登录验证的随机数字等等,那么你知道在Python中怎么生成随机数吗? 往下看,就是这么简单! 题目 p ...

  9. 「网络流24题」 12. 软件补丁问题

    「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移. 没错,跟网络流没任何关系. b1.b2.f1.f2 都用二进制存下来,第 i 位表示是否有这个错误. 然后从每位都是 1 到 0 ...

最新文章

  1. “全能”选手—Django 1.10文档中文版Part1
  2. 好用的 Abyss Web Server
  3. runfile python_python文件执行路径问题
  4. 深度学习基础1(神经网络)
  5. python画函数图像要用到的模块_教你如何绘制数学函数图像——numpy和matplotlib的简单应用...
  6. highcharts 怎么去掉鼠标悬停效果_练瑜伽减肥没效果什么原因?
  7. poj3714 最近点对
  8. C语言如何捕获按下方向键
  9. JSK-7 奇怪的国家【入门】
  10. Redis--blpop命令使用
  11. 浏览器上网的一些原理
  12. 4个常用Linux开发环境工具,你最常用的是那个?
  13. C++ MFC控件重影-编辑框重影
  14. Java实现 蓝桥杯 算法提高 日期计算
  15. 最强升级系统鸿蒙大世界等级,最强升级系统瞬间满级
  16. vue获取tr内td里面所有内容_点击td获取tr的所有值
  17. python代码计算字数_如何用python计算文件的字数
  18. Thimax膳美师牛排机体验:做一份顶级牛排,简直0难度!
  19. 看牛人如何学习JAVA-如何学习java
  20. 2016SDAU编程练习二1009

热门文章

  1. QQ2009 暂时无法登陆,请稍候重试 问题解决方法
  2. android9.0去掉默认的锁屏界面和屏幕超时锁屏
  3. 流量红利后期低成本的获客方式
  4. OCR 手写体英语作文扫描数据集
  5. github怎么切换到gitee_将博客从github迁移至gitee
  6. 职教云JAVA课程答案_智慧职教云课堂Java程序设计答案公众号
  7. WinMerge UTF-8 中文乱码
  8. vs2010 ajax客户端,Visual Studio 2010 - Functional Testing
  9. 【数学】C107_LQ_报纸页数 平方怪圈 猴子分香蕉 方格计数 矩形切割(归纳法 | 打印归纳)
  10. 【C/C++】printf() 中 %+.2f和%.2f的区别