算法刷题打卡第91天:统计一个圆中点的数目

news2024/11/23 15:04:49

统计一个圆中点的数目

难度:中等

给你一个数组 points ,其中 points[i] = [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。

同时给你一个数组 queries ,其中 queries[j] = [xj, yj, rj] ,表示一个圆心在 (xj, yj) 且半径为 rj 的圆。

对于每一个查询 queries[j] ,计算在第 j 个圆 点的数目。如果一个点在圆的 边界上 ,我们同样认为它在圆

请你返回一个数组 answer ,其中 answer[j] 是第 j 个查询的答案。

示例 1:

请添加图片描述

输入:points = [[1,3],[3,3],[5,3],[2,2]], queries = [[2,3,1],[4,3,1],[1,1,2]]
输出:[3,2,2]
解释:所有的点和圆如上图所示。
queries[0] 是绿色的圆,queries[1] 是红色的圆,queries[2] 是蓝色的圆。

示例 2:

请添加图片描述

输入:points = [[1,1],[2,2],[3,3],[4,4],[5,5]], queries = [[1,2,2],[2,2,2],[4,3,2],[4,3,3]]
输出:[2,3,2,4]
解释:所有的点和圆如上图所示。
queries[0] 是绿色的圆,queries[1] 是红色的圆,queries[2] 是蓝色的圆,queries[3] 是紫色的圆。

枚举每个点是否在每个圆中

思路:

我们可以使用二重循环,对于每一个查询,枚举所有的点,依次判断它们是否在查询的圆中即可。

如果查询圆的圆心为 ( c x , c y ) (c_x, c_y) (cx,cy),半径为 c r c_r cr,枚举的点坐标为 ( p x , p y ) (p_x, p_y) (px,py),那么点在圆中(包括在圆上的情况)当且仅当点到圆心的距离小于等于半径。我们可以用以下方法进行判断:

( c x − p x ) 2 + ( c y − p y ) 2 ≤ c r 2 (c_x-p_x)^2 + (c_y-p_y)^2 \leq c_r^2 (cxpx)2+(cypy)2cr2

注意这里两侧的距离都进行了平方操作,这样可以避免引入浮点数,产生不必要的误差。

复杂度分析:

  • 时间复杂度: O ( m n ) O(mn) O(mn),其中 m m m n n n 分别是数组 points \textit{points} points queries \textit{queries} queries 的长度。
  • 空间复杂度: O ( 1 ) O(1) O(1)
class Solution:
    def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]:
        res = []
        for i in queries:
            count = 0
            for j in points:
                if pow((i[0] - j[0]) ** 2 + (i[1] - j[1]) ** 2, 1/2) <= i[2]:
                    count += 1
            res.append(count)
        return res

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/queries-on-number-of-points-inside-a-circle

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

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

相关文章

C++100-C++拓展002-float精度问题

文章目录C100-C拓展002-float精度问题摘要Cfloat精度问题C浮点float基本格式C查看数据范围在线练习&#xff1a;总结C100-C拓展002-float精度问题 摘要 本系列为C学习系列&#xff0c;会介绍C基础语法&#xff0c;基础算法与数据结构的相关内容。本文为C拓展内容&#xff0c;包…

linux安装

我们在部暑的时候 总要用到linux 所以我们可以提前把linux安装好 准备一个安装好的linux 到时直接克隆出来用就可以一 安装linux1). 选择创建新的虚拟机2). 选择"典型"配置3). 选择"稍后安装操作系统(S)"4). 选择"Linux"操作系统,"CentOS7 …

IAR警告抑制及还原

工作中需要临时抑制 警告 Pa084&#xff0c;源代码如下&#xff1a; sy_errno_t sy_memset_s(void *dest, sy_rsize_t dmax, int value, sy_rsize_t n) { sy_errno_t err; if (dest NULL) { return SY_ESNULLP; } if (dmax > SY_RSIZE…

「C语言进阶」数据内存的存储

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 &#x1f430;数据类型的介绍 &#x1f430;类型的意义 &#x1f430;数据类型的基本归类…

引入短信服务发送手机验证码进行安全校验

其他方案>引入QQ邮箱发送验证码进行安全校验 相对短信验证码&#xff0c;操作更简单而且免费 最近想给自己的项目在注册时加点安全校验&#xff0c;准备使用免费的邮箱验证来着&#xff0c;在上一篇引入QQ邮箱进行安全校验时&#xff0c;看有朋友说阿里云会送一些短信服务免…

论文阅读 | Video Super-Resolution Transformer

引言&#xff1a;2021年用Transformer实现视频超分VSR的文章&#xff0c;改进了SA并在FFN中加入了光流引导 论文&#xff1a;【here】 代码&#xff1a;【here】 Video Super-Resolution Transformer 引言 视频超分中有一组待超分的图片&#xff0c;因此视频超分也经常被看做…

【网络原理4】TCP特性篇

目录 一、滑动窗口 传统发送接收机制的缺点 滑动窗口的特性 发送方什么时候会接着发送下一条报文 如果在滑动窗口的机制下面发生了丢包会怎样处理 情况1&#xff1a;ack丢了 情况2&#xff1a;主动发送的syn丢包了 滑动窗口的应用场景 二、TCP流量控制&#xff1a;根据接…

大数据下Flink on YarnSession 高可用集群环境部署开辟资源发布任务

前言&#xff1a;搭建大数据环境集群环境算是比较麻烦的一个事情&#xff0c;并且对硬件要求也比较高其中搭建大数据环境需要准备jdk环境和zk环境&#xff0c;还有hdfs&#xff0c;还有ssh之间的免密操作&#xff0c;还有主机别名访问不通的问题 等。必然会出现的问题&#xff…

拆个微波炉,分析一下电路

微波炉是用2450MHz的超高频电磁波来加热食品&#xff0c;它能无损穿越塑料&#xff0c;陶瓷&#xff0c;不能穿越金属&#xff0c;碰到金属会反射&#xff0c;但穿过含水食物&#xff0c;食物内的分子会高速摩擦&#xff0c;产生热量&#xff0c;使食物变熟。在厨房电器中&…

自学180天,我从功能测试进阶到自动化测试了...

大家好&#xff0c;我是彭于晏&#xff0c;一个7年测试工作的老司机。因为我一直在分享自动化测试技术&#xff0c;所以时常会被问到这个问题&#xff1a;“靓仔&#xff0c;功能测试想转自动化测试&#xff0c;请问要怎么入手&#xff1f;” 那么&#xff0c;接下来我就结合自…

不愧是GitHub点赞飙升的Java10W字面经,面面俱到,太全了!

最新的喜报啊&#xff0c;话不多说&#xff0c;先看图&#xff01;&#xff08;为了保护朋友的隐私&#xff0c;同时还有我自己的隐私&#xff0c;楼主就都打码了~&#xff01;&#xff09; 朋友说到这儿时候我就跟他说&#xff0c;不要只看眼前&#xff0c;要看长远一些&#…

前端开发之防抖与节流

前端开发中我们经常会通过监听某些事件来完成项目需求 1.通过监听 scroll 事件&#xff0c;检测滚动位置&#xff0c;根据滚动位置显示返回顶部按钮 2.通过监听 resize 事件&#xff0c;对某些自适应页面调整DOM的渲染&#xff08;通过CSS实现的自适应不再此范围内&#xff09;…

动态库和静态库的区别

什么是库文件 一般来说&#xff0c;一个程序&#xff0c;通常都会包含目标文件和若干个库文件。经过汇编得到的目标文件再经过和库文件的链接&#xff0c;就能构成可执行文件。库文件像是一个代码仓库或代码组件的集合&#xff0c;为目标文件提供可直接使用的变量、函数、类等…

Hadoop3.3.0--Linux编译安装

Hadoop3.3.0–Linux编译安装 基础环境&#xff1a;Centos 7.7 编译环境软件安装目录 mkdir -p /export/server一、Hadoop编译安装&#xff08;选做&#xff09; 可以直接使用课程提供已经编译好的安装包。 安装编译相关的依赖 yum install gcc gcc-c make autoconf automake…

leaflet 上传CSV文件,导出geojson格式文件(064)

第064个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载CSV文件,将图形显示在地图上。点击导出geojson,下载成geojson文件。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共114行)安装插件…

如何判断是否ChatGPT回答出来的问题?解决方法详解

目录 前言 一、人工智能&#xff08;“ChatGPT”等&#xff09;能淘汰人类吗&#xff1f; 二、完全禁止或严格限制使用ChatGPT&#xff0c;是利大于弊还是&#xff1f; 1、ChatGPT与造纸术优点 2、人有悲欢离合&#xff0c;月有阴晴圆缺&#xff0c;此事古难全&#xff01…

Python基础-数据类型之序列

序列&#xff1a;一种数据结构&#xff0c;序列中的每个元素都会被分配到一个序号&#xff08;元素的位置&#xff09;。 常用的序列有&#xff1a;列表、元组、字符串。 一、序列的操作&#xff1a; 1&#xff1a;通过索引取值 nums_list [1,2,3,4] print(nums_list[0]) …

消息队列的特点

一、背景&#xff1a;在分布式系统中是如何处理高并发的由于在高并发的环境下&#xff0c;来不及同步处理用户发送的请求&#xff0c;则会导致请求发送阻塞。比如说&#xff0c;大量的insert、update之类的请求同时到达数据库MYSQL&#xff0c;直接导致无数的行锁表锁&#xff…

零基础机器学习做游戏辅助第十一课--原神自动钓鱼(一)

一、序言 前面我们已经学习了神经网络,卷积神经网络和强化学习等内容,也都做了对应的实例。但是我们的课是做游戏辅助,那么肯定要去游戏里实战一番。 今天就带领大家用我们所学的知识对近两年非常火爆的游戏《原神》进行实战。我们以自动钓鱼为例。 二、观察游戏玩法制定方案…

Seata源码学习(五)- Seata服务端(TC)源码解读

Seata源码分析- Seata服务端&#xff08;TC&#xff09;源码解读 上节课我们已经分析到了SQL语句最终的执行器&#xff0c;但是再往下分析之前&#xff0c;我们需要先来分析一下TM客户端与TC端通讯以后&#xff0c;TC端的具体操作 服务端表解释 我们的Seata服务端在应用的时…