每日一题_447.回旋镖的数量
每日一题_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.回旋镖的数量相关推荐
- 「每日一题」回旋镖的数量
这是 LeetCode 上 2021-9-13 的每日一题:「447. 回旋镖的数量」 1. 题目描述 给定平面上n对互不相同的点points,其中points[i] = [xi, yi].回旋镖是由 ...
- Leetcode题库-回旋镖的数量(java语言版)
题目描述: 给定平面上 n 对不同的点,"回旋镖" 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序). 找到 ...
- 每日一题 | 计算松鼠的数量
题目: 有两只小松鼠,从出生开始第3个月,每个月都会生一对小松鼠.小松鼠3个月后,也可以继续生,松鼠寿命是10个月.假设第一个月有一对刚出生的小松鼠,第n个月有多少松鼠? 请编写一个函数,接收一个数字 ...
- leetcode每日一题 1020. 飞地的数量 简单的DFS板子题 (DFS+填平遍历) 根据是否连通边界找其是否为飞地~
- 《LeetCode之每日一题》:148.回旋镖的数量
回旋镖的数量 有关题目 题解 题目链接: 回旋镖的数量 有关题目 给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] .回旋镖 是由点 (i, j, k ...
- 【每日一题】 1128. 等价多米诺骨牌对的数量
[每日一题] 1128. 等价多米诺骨牌对的数量 避免每日太过咸鱼,一天搞定一道LeetCode算法题 一.题目描述 给你一个由一些多米诺骨牌组成的列表 dominoes. 如果其中某一张多米诺骨牌可 ...
- SQL每日一题(20201030)QTY表示发货数量,MIN_QTY表示最小发货量
SQL每日一题(20211222) SQL每日一题(20220517) /** 此题涉及到递归,先用oracle的方法来解决 1.先用ceil函数来得到需要几次 比如celi(170/100) 需要2 ...
- Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...
- Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...
最新文章
- 分享一首诗歌关于人生 时间 成就 得失的
- C++STL之next_permutation使用
- 青瓷游戏上市首日破发,“元宇宙光环”能否拯救年内首支游戏股?
- php 设置window计划任务,windows下设置计划任务自动执行PHP脚本
- 使用Python连接数据库的脚本
- java语言使用箭头键画线_Java:使用带箭头键的按键
- pthread_detach函数
- TCP三次握手详解及面试题
- 清华大学团队夺冠AAAI 2021国际深度元学习挑战赛
- android 使用现成做get请求
- 习题3.10 汉诺塔的非递归实现 (25分)
- 如何确定恶意软件是否在自己的电脑中执行过?
- org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
- 对于BI系统的建设,看看专业人士怎么说
- 【物联网】阿里云iot物联网平台监控设备 在线离线状态 解决方案
- php添加ico,PHP生成ICO图标的代码
- python库源码分析_python第三方库Faker源码解读
- 荐书 | 手牵手一步两步望着天,看星星一颗两颗连成线
- error C2059: 语法错误:“,”
- “该设备正在使用中。请关闭可能使用该设备的所有程序或窗口 然后重试” 解决步骤