• LeetCode中等题之统计一个圆中点的数目


    题目

    给你一个数组 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] 是紫色的圆。

    提示:

    1 <= points.length <= 500
    points[i].length == 2
    0 <= x​​​​​​i, y​​​​​​i <= 500
    1 <= queries.length <= 500
    queries[j].length == 3
    0 <= xj, yj <= 500
    1 <= rj <= 500
    所有的坐标都是整数。

    来源:力扣(LeetCode)

    解题思路

      非常简单别致的一道题,思路很简易只需要遍历然后用距离公式判断即可,但是题目的难点是优化,如何避免重复计算才是重点。这里仅作记录,后续再进行优化。

    class Solution:
        def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]:
            ans=[]
            for i in queries:
                count=0
                for j in points:
                    if (i[0]-j[0])**2+(i[1]-j[1])**2<=i[2]**2:
                        count+=1
                ans.append(count)
            return ans
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

  • 相关阅读:
    day074:XML、XML的解析
    CS210: Software Development PA6 PatientQueue
    基于检索增强的大语言模型
    Linux环境基础开发工具使用
    pytorch学习笔记4
    详解卡尔曼滤波原理
    C语言 每日一题 PTA 10.28 day6
    【Java】高效利用异常处理技巧
    SpringBoot集成swagger
    【4. 操作系统—非连续内存分配】
  • 原文地址:https://blog.csdn.net/qq_18560985/article/details/126856055