「每日一题」回旋镖的数量
这是 LeetCode 上 2021-9-13 的每日一题:「447. 回旋镖的数量」
1. 题目描述
给定平面上n
对互不相同的点points
,其中points[i] = [xi, yi]
。回旋镖是由点(i, j, k)
表示的元组 ,其中i
和j
之间的距离和i
和k
之间的距离相等(需要考虑元组的顺序)。
返回平面上所有回旋镖的数量。
示例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. 解答
- 遍历
points
,将每个点作为顶点,计算其他点到顶点的距离,保存相同距离点的数量在map
中 - 遍历每个
map
,若与顶点相同距离的点的个数大于1,则计算组成回旋镖的数量 - 一共
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;
};
「每日一题」回旋镖的数量相关推荐
- 每日一题_447.回旋镖的数量
每日一题_447.回旋镖的数量 leetcode 447 题目: 题意分析: 今天的题目比较简单,没有复杂的算法,主要是用空间换时间.该题是给我们平面上一系列的点,这些点都在整数格点上,然后当其中一个 ...
- 「每日一题」航班预订统计
这是 LeetCode 上2021-8-31的每日一题:「1109. 航班预订统计」 1. 题目描述 这里有n个航班,它们分别从1到n进行编号. 有一份航班预订表bookings,表中第i条预订记录b ...
- 使用promise解决回调地狱_「每日一题」Promise 是什么?
window.Promise 已经是 JS 的一个内置对象了. 1. Promise 有规格文档吗? 2. 你一般如何使用 Promise. ----------- 目前的 Promise 都遵循 P ...
- 饿饿,饭饭「每日一题」
饿饿 饭饭 - 题目 - Daimayuan Online Judgerre 题解:经典二分「calc函数好好写就好」 AC代码: #include <iostream> #define ...
- vin端口是什么意思_「每日一题」什么是 Web 服务器(server)
前端开发人员应该对 Web 开发中的基本概念有一些了解,请简述 什么是 Web 服务器 Web 服务器能做什么 -------- 首先我们来了解什么是服务器(server) 一般来说,server 有 ...
- 找出数组中被其他元素整除的元素_「每日一题」数组中重复的数字
题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次.请找出数组中任意一个重复的数字. Input ...
- liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案
#6006. 「网络流 24 题」试题库 题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求试卷 ...
- python 编程一日一练-「每日一练」巧用python生成随机数
原标题:「每日一练」巧用python生成随机数 随机数在我们的生产和生活中有很多的应用场景,比如说登录验证的随机数字等等,那么你知道在Python中怎么生成随机数吗? 往下看,就是这么简单! 题目 p ...
- 「网络流24题」 12. 软件补丁问题
「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移. 没错,跟网络流没任何关系. b1.b2.f1.f2 都用二进制存下来,第 i 位表示是否有这个错误. 然后从每位都是 1 到 0 ...
最新文章
- “全能”选手—Django 1.10文档中文版Part1
- 好用的 Abyss Web Server
- runfile python_python文件执行路径问题
- 深度学习基础1(神经网络)
- python画函数图像要用到的模块_教你如何绘制数学函数图像——numpy和matplotlib的简单应用...
- highcharts 怎么去掉鼠标悬停效果_练瑜伽减肥没效果什么原因?
- poj3714 最近点对
- C语言如何捕获按下方向键
- JSK-7 奇怪的国家【入门】
- Redis--blpop命令使用
- 浏览器上网的一些原理
- 4个常用Linux开发环境工具,你最常用的是那个?
- C++ MFC控件重影-编辑框重影
- Java实现 蓝桥杯 算法提高 日期计算
- 最强升级系统鸿蒙大世界等级,最强升级系统瞬间满级
- vue获取tr内td里面所有内容_点击td获取tr的所有值
- python代码计算字数_如何用python计算文件的字数
- Thimax膳美师牛排机体验:做一份顶级牛排,简直0难度!
- 看牛人如何学习JAVA-如何学习java
- 2016SDAU编程练习二1009
热门文章
- QQ2009 暂时无法登陆,请稍候重试 问题解决方法
- android9.0去掉默认的锁屏界面和屏幕超时锁屏
- 流量红利后期低成本的获客方式
- OCR 手写体英语作文扫描数据集
- github怎么切换到gitee_将博客从github迁移至gitee
- 职教云JAVA课程答案_智慧职教云课堂Java程序设计答案公众号
- WinMerge UTF-8 中文乱码
- vs2010 ajax客户端,Visual Studio 2010 - Functional Testing
- 【数学】C107_LQ_报纸页数 平方怪圈 猴子分香蕉 方格计数 矩形切割(归纳法 | 打印归纳)
- 【C/C++】printf() 中 %+.2f和%.2f的区别