0
点赞
收藏
分享

微信扫一扫

LeetCode 1828. 统计一个圆中点的数目

佳简诚锄 2022-02-15 阅读 39

1828. 统计一个圆中点的数目

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

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

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

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

示例 1:

img

输入: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:

img

输入: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 <= xi, yi <= 500
  • 1 <= queries.length <= 500
  • queries[j].length == 3
  • 0 <= xj, yj <= 500
  • 1 <= rj <= 500
  • 所有的坐标都是整数。

二、方法一

模拟

class Solution {
    public int[] countPoints(int[][] points, int[][] queries) {

        int[] answer = new int[queries.length];

        for(int i=0;i<queries.length;i++){
            int[] cur = queries[i];
            int x = cur[0];
            int y = cur[1];
            int r = cur[2];

            int sum=0;
            for(int[] p:points){
                int a = p[0] - x;
                int b = p[1]- y;
                if(a*a+b*b<=r*r) sum++;
            }

            answer[i] = sum;

        }

        return answer;
    }
}

复杂度分析

  • 时间复杂度:O(n)。

  • 空间复杂度:O(1)。

举报

相关推荐

leetcode 统计隐藏数组数目

0 条评论