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

leetcode 447

题目:

题意分析:
今天的题目比较简单,没有复杂的算法,主要是用空间换时间。该题是给我们平面上一系列的点,这些点都在整数格点上,然后当其中一个点到另外两个不重复的点的欧几里得距离相等,那么这三个点就构成一个回旋镖,其实就是类似一个 “ V ”行,所以叫 “ 回旋镖 ” 嘛。而题目就是让我们求平面上所有的点中,构成的回旋镖的个数。

算法(哈希表):
首先这道题如果暴力枚举的话,因为是三个点,所以是三层循环,n最大是500,那么500^3 = 1.25 * 1e8 > 1e8,所以时间复杂度爆了。因此,需要优化。再回去读题,对于当前的一个点,我们关心的其实是其他点到当前点的距离,然后能和当前点构成回旋镖的点必然同属于一个集合,就是距离相等的点构成一个集合,然后不同距离的点就是不同的集合,其次我们并不关心每个集合中的具体的元素,只要知道集合中元素的个数,排列就可以得到能和当前点构成回旋镖的数量了。鉴于以上分析,我们可以采用Hash表数据结构,遍历平面上所有点,然后对每一个点,计算其他的点到该点的距离,并用map来记录每个距离的点的个数。最后A(2, k)排列即可得到结果。

代码:

class Solution {
public:int numberOfBoomerangs(vector<vector<int>>& points) {int ans = 0;for (auto cur_point: points){int x_i = cur_point[0], y_i = cur_point[1];unordered_map<int, int> mp;for (int i = 0; i < points.size(); i ++){int x_j = points[i][0], y_j = points[i][1];int dist = (x_i - x_j) * (x_i - x_j) + (y_i - y_j) * (y_i - y_j);++ mp[dist];}for (auto &item : mp)ans += item.second * (item.second - 1);}return ans;}
};

每日一题_447.回旋镖的数量相关推荐

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

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

  2. Leetcode题库-回旋镖的数量(java语言版)

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

  3. 每日一题 | 计算松鼠的数量

    题目: 有两只小松鼠,从出生开始第3个月,每个月都会生一对小松鼠.小松鼠3个月后,也可以继续生,松鼠寿命是10个月.假设第一个月有一对刚出生的小松鼠,第n个月有多少松鼠? 请编写一个函数,接收一个数字 ...

  4. leetcode每日一题 1020. 飞地的数量 简单的DFS板子题 (DFS+填平遍历) 根据是否连通边界找其是否为飞地~

  5. 《LeetCode之每日一题》:148.回旋镖的数量

    回旋镖的数量 有关题目 题解 题目链接: 回旋镖的数量 有关题目 给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] .回旋镖 是由点 (i, j, k ...

  6. 【每日一题】 1128. 等价多米诺骨牌对的数量

    [每日一题] 1128. 等价多米诺骨牌对的数量 避免每日太过咸鱼,一天搞定一道LeetCode算法题 一.题目描述 给你一个由一些多米诺骨牌组成的列表 dominoes. 如果其中某一张多米诺骨牌可 ...

  7. SQL每日一题(20201030)QTY表示发货数量,MIN_QTY表示最小发货量

    SQL每日一题(20211222) SQL每日一题(20220517) /** 此题涉及到递归,先用oracle的方法来解决 1.先用ceil函数来得到需要几次 比如celi(170/100) 需要2 ...

  8. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

  9. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

最新文章

  1. 分享一首诗歌关于人生 时间 成就 得失的
  2. C++STL之next_permutation使用
  3. 青瓷游戏上市首日破发,“元宇宙光环”能否拯救年内首支游戏股?
  4. php 设置window计划任务,windows下设置计划任务自动执行PHP脚本
  5. 使用Python连接数据库的脚本
  6. java语言使用箭头键画线_Java:使用带箭头键的按键
  7. pthread_detach函数
  8. TCP三次握手详解及面试题
  9. 清华大学团队夺冠AAAI 2021国际深度元学习挑战赛
  10. android 使用现成做get请求
  11. 习题3.10 汉诺塔的非递归实现 (25分)
  12. 如何确定恶意软件是否在自己的电脑中执行过?
  13. org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
  14. 对于BI系统的建设,看看专业人士怎么说
  15. 【物联网】阿里云iot物联网平台监控设备 在线离线状态 解决方案
  16. php添加ico,PHP生成ICO图标的代码
  17. python库源码分析_python第三方库Faker源码解读
  18. 荐书 | 手牵手一步两步望着天,看星星一颗两颗连成线
  19. error C2059: 语法错误:“,”
  20. “该设备正在使用中。请关闭可能使用该设备的所有程序或窗口 然后重试” 解决步骤

热门文章

  1. 智能驾驶中预期安全系统的架构
  2. A320M HDV 4.0主板用CH341A手动刷BIOS支持5600g
  3. python语音验证码识别_Python验证码识别
  4. 短信验证码mysql_短信验证码
  5. 黑客大神用什么杀毒? Windows 自带的就够, 只是加了亿点微小的强化
  6. EOS区块链和以太坊区块链那个更好?
  7. Linux下文件的压缩、解压缩、打包以及提取
  8. ScrollView分屏显示
  9. 峰值电流检测电路设计/自己备忘
  10. c语言用递归求质因子,使用递归方法求解整数质因子