LeetCode 0447.回旋镖的数量:哈希表

【LetMeFly】447.回旋镖的数量:哈希表

力扣题目链接:https://leetcode.cn/problems/number-of-boomerangs/

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

 

提示:

  • n == points.length
  • 1 <= n <= 500
  • points[i].length == 2
  • -104 <= xi, yi <= 104
  • 所有点都 互不相同

方法一:哈希表

第一重循环枚举每个 j j j点。对于points[j],使用一个哈希表,记录所有的点到j点的距离的出现次数。然后遍历哈希表,假设某距离出现了cnt次,那么就将 c n t × ( c n t − 1 ) cnt\times(cnt-1) cnt×(cnt1)累加到答案中。

  • 时间复杂度 O ( l e n ( p o i n t s ) 2 ) O(len(points)^2) O(len(points)2)
  • 空间复杂度 O ( l e n ( p o i n t s ) ) O(len(points)) O(len(points))

AC代码

C++
class Solution {
public:int numberOfBoomerangs(vector<vector<int>>& points) {int ans = 0;for (vector<int>& p : points) {unordered_map<int, int> ma;for (vector<int>& q : points) {ma[(p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])]++;}for (auto [_, cnt] : ma) {ans += cnt * (cnt - 1);}}return ans;}
};
Python
# from typing import List
# from collections import defaultdictclass Solution:def numberOfBoomerangs(self, points: List[List[int]]) -> int:ans = 0for p in points:ma = defaultdict(int)for q in points:ma[(p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])] += 1for _, cnt in ma.items():ans += cnt * (cnt - 1)return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/135464460

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法-大数相乘

解决算法; * 1. 模拟小学乘法&#xff1a;最简单的乘法竖式手算的累加型&#xff1b; * 2. 分治乘法&#xff1a;最简单的是Karatsuba乘法&#xff0c;一般化以后有Toom-Cook乘法&#xff1b; * 3. 快速傅里叶变换FFT&#xff1a;&#xff08;为了避免精度问题&#xff0c;可…

汽车雷达:实时SAR成像的实现

摘要: 众所周知,点云成像是目前实现汽车雷达感知最流行的方案,尤其是采用多级联实现的4D点云成像雷达,这是目前最有希望实现产品落地的技术方案之一。 今天重点分享关于汽车雷达SAR成像相关技术内容,这也证实了4D点云成像雷达并不一定就是汽车雷达成像唯一的方案,在业内…

CompletableFuture超详解与实践

0.背景 一个接口可能需要调用 N 个其他服务的接口&#xff0c;这在项目开发中还是挺常见的。举个例子&#xff1a;用户请求获取订单信息&#xff0c;可能需要调用用户信息、商品详情、物流信息、商品推荐等接口&#xff0c;最后再汇总数据统一返回。 如果是串行&#xff08;按…

React本地开发时,组件为啥会渲染两次

原因是因为使用了StrictMode &#xff0c; StrictMode 是一个用来突出显示应用程序中潜在问题的工具。与 Fragment 一样&#xff0c;StrictMode 不会渲染任何可见的 UI。它为其后代元素触发额外的检查和警告。 StrictMode 目前有助于&#xff1a; 识别不安全的生命周期 {#id…

前端如何结合数据库查看本地头像文件,配置静态资源

由于oss过期了&#xff0c;项目中又需要一个上传头像功能&#xff0c;于是研究了一下上传文件至本地&#xff0c;用java将文件存储到本地的代码好写&#xff0c;但是如何利用前端Vue把我难住了&#xff0c;因为之前存在OSS服务器直接查看就可以了&#xff0c;于是记录本文。 后…

数据结构-测试4

一、判断题 1.队列结构的顺序存储会产生假溢出现象。 &#xff08;T&#xff09; 2.度为二的树就是二叉树。(F) 二叉树的度可以小于等于2 3. 栈是插入和删除只能在一端进行的线性表&#xff1b;队列是插入在一端进行&#xff0c;删除在另一端进行的线性表。&#xff08;T&…

如何彻底卸载Microsoft Edge浏览器

一、引语 随着微软推出全新的Edge浏览器&#xff0c;许多用户可能想要尝试或完全切换到其他浏览器。在这篇文章中&#xff0c;我们将向您介绍如何彻底卸载Microsoft Edge浏览器&#xff0c;以确保您的系统干净整洁。 二、通过系统设置卸载 1、首先&#xff0c;右键单击桌面上…

C //练习 1-11 你准备如何测试单词计数程序?如果程序中存在某种错误,那么什么样的输入最可能发现这类错误呢?

C程序设计语言 &#xff08;第二版&#xff09; 练习1-11 练习 1-11 你准备如何测试单词计数程序&#xff1f;如果程序中存在某种错误&#xff0c;那么什么样的输入最可能发现这类错误呢&#xff1f; 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&am…

C++模板——(2)函数模板的声明和使用

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 勤奋&#xff0c;机会&#xff0c;&am…

Linux文件系统与日志管理

目录 一、Linux文件系统 1、inode 与 block 详解 1.1 inode 和 block 概述 1.2 inode表的内容 1.3 查看文件的inode号码 1.4 模拟innode号耗尽故障处理 2、访问文件的流程 3、文件恢复 3.1 恢复误删除的ext3格式文件 3.2 恢复误删除的 xfs 格式文件 二、Linux日志…

《BackTrader量化交易图解》第8章:plot 绘制金融图

文章目录 8. plot 绘制金融图8.1 金融分析曲线8.2 多曲线金融指标8.3 Observers 观测子模块8.4 plot 绘图函数的常用参数8.5 买卖点符号和色彩风格 8. plot 绘制金融图 8.1 金融分析曲线 BackTrader内置的plot绘图函数&#xff0c; 通过style参数变量控制不同风格的K线图&…

因为热Key和大Key,Redis终于被压崩了

大家好&#xff0c;我是洋子&#xff0c;今天分享一下在做压测时遇到的很有意思的性能问题以及对应的排查解决方案。这个性能问题的现象为&#xff0c;Redis线上实例不可用&#xff0c;Redis读写均超时 性能问题排查过程 先来看一下问题代码&#xff08;Go语言实现&#xff0…

Android 8.1 默认赋予应用权限

Android 8.1 默认赋予应用权限 最近接到项目需求&#xff0c;需要默认授予预置APP的应用权限以便操作使用&#xff0c;具体修改参照如下&#xff1a; /frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java private void grantDefau…

【CMake】1. VSCode 开发环境安装与运行

CMake 示例工程代码 https://github.com/LABELNET/cmake-simple 插件 使用 VSCode 开发C项目&#xff0c;安装 CMake 插件 CMakeCMake ToolsCMake Language Support &#xff08;建议&#xff0c;语法提示) 1. 配置 CMake Language Support , Windows 配置 donet 环境 这…

RT-Thread: 基于STM32CubeMX配置驱STM32驱动的USB虚拟串口调试

关键词&#xff1a;USB 虚拟串口 USB虚拟串口&#xff0c;RT-Thread Studio&#xff0c;STM32 说明&#xff1a; 1&#xff1a;文档记录 STM32F103系列基于 RT-Thread 系统的 USB虚拟串口的开启及数据收发应用流程介绍。 2&#xff1a;本文以STM32F103C8T6型号做测试&#x…

【mysql】Mac安装mysql

1.安装mysql brew install mysql提示&#xff1a;We’ve installed your MySQL database without a root password. 2.给root用户设置密码 ##To connect run mysql -u root ##设置密码 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY a12345678*;3.启动…

计算机基础面试题 |16.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

卡码网Java基础课 | 4. A+B问题IV,5. A+B问题VIII

卡码网Java基础课| 4. AB问题IV&#xff0c;5. AB问题VIII 三元运算符4. AB问题IV5. AB问题VIII 三元运算符 普通if int a 10; int b 20; int c; if (a > b) {c a; } else {c b; }而三元运算符的结构如下&#xff1a; 会先求expression的值&#xff0c;如果为 true ,则…

SLB、DMZ、Nginx、Ingress、Gateway、Kibana和Grafana

SLB、DMZ、Nginx、Ingress、Gateway、Kibana和Grafana虽然有一些相似之处&#xff0c;但是它们的功能和适用场景还是有所不同。 SLB主要用于将大流量的请求分配到多个服务器上进行处理&#xff0c;从而提高系统的可伸缩性和可靠性。它适用于需要处理大流量的应用&#xff0c;如…

ANSIC的编译限制有哪些?

ANSIC&#xff08;即C89&#xff0c;也称为ISO/IEC 9899:1989&#xff09;标准中对编译器的限制。 主要体现在以下几个方面 1、函数形参数量上限 ANSIC规定的函数形参数量上限为31个。 2、函数调用时实参数量上限 ANSIC规定的函数调用时实参数量上限也是31个。 3、一条源…