首页 > 其他分享 >1828. 统计一个圆中点的数目

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

时间:2023-10-12 12:31:52浏览次数:42  
标签:1828 圆中点 int length points queries answer 如上图 数目


题目描述

给你一个数组 points ,其中 1828. 统计一个圆中点的数目_数组,表示第i个点在二维平面上的坐标。多个点可能会有 相同的坐标。

同时给你一个数组 queries ,其中 1828. 统计一个圆中点的数目_数组_02 ,表示一个圆心在1828. 统计一个圆中点的数目_数组_03且半径为1828. 统计一个圆中点的数目_数组_04的圆。

对于每一个查询1828. 统计一个圆中点的数目_数组_05,计算在第 j 个圆点的数目。如果一个点在圆的边界上 ,我们同样认为它在圆

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

示例1:

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

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

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

输入: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
  • 所有的坐标都是整数。

解题思路

讲真,这真的是中等难度题吗?

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

不过点都点开了,懒得换了~~

初中学过的平面上两点之间的距离公式:1828. 统计一个圆中点的数目_数组_09

看某点在不在圆内就是计算这个点到圆心的距离,是不是小于半径。这里出于效率的考虑,没有计算平方根,直接比较的是平方和(因为计算平方根比乘法耗时间~)

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

AC代码

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

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

        for (int i=0; i<points.length; i++) {
            for (int j=0; j<queries.length; j++) {
                int x = points[i][0] - queries[j][0];
                int y = points[i][1] - queries[j][1];
                int r = queries[j][2];
                if ( ( ( (x*x) + (y*y) ) - (r*r)) <= 0 ) {
                    answer[j]++;
                }
            }
        }
        
        // return Arrays.stream(answer).filter(item -> item>0).toArray();
        return answer;
    }
}

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

标签:1828,圆中点,int,length,points,queries,answer,如上图,数目
From: https://blog.51cto.com/u_12966357/7825947

相关文章

  • 力扣-2367-算术三元组的数目
    给你一个下标从0开始、严格递增的整数数组nums和一个正整数diff。如果满足下述全部条件,则三元组(i,j,k)就是一个算术三元组:i<j<k,nums[j]-nums[i]==diff且nums[k]-nums[j]==diff返回不同算术三元组的数目。 示例1:输入:nums=[0,1,4,6,7,10],di......
  • 力扣-2744-最大字符串配对数目
    给你一个下标从0开始的数组words,数组中包含互不相同的字符串。如果字符串words[i]与字符串words[j]满足以下条件,我们称它们可以匹配:字符串words[i]等于words[j]的反转字符串。0<=i<j<words.length请你返回数组words中的最大匹配数目。注意,每个字符串最......
  • 力扣-2006-差的绝对值为 K 的数对数目
    给你一个整数数组nums和一个整数k,请你返回数对(i,j)的数目,满足i<j且|nums[i]-nums[j]|==k。|x|的值定义为:如果x>=0,那么值为x。如果x<0,那么值为-x。示例1:输入:nums=[1,2,2,1],k=1输出:4解释:差的绝对值为1的数对为:-[1,2,2,1]-[1,2,2,1]-......
  • 花期内的花的数目
    2251.花期内的花的数目看到题目的第一想法是桶排序,但是想想肯定会超时,在题解区看到了这么一种解法,感觉很有意思,就记录一下。要统计某一时间内多少花开放,也就是统计某一时间有多少花开放在它之前,结束在它之后。因为一朵花的开始一定是比结束早的,所以并不需要关心匹配问题。使用......
  • 力扣-2427-公因子的数目
    给你两个正整数a和b,返回a和b的公因子的数目。如果x可以同时整除a和b,则认为x是a和b的一个公因子。 示例1:输入:a=12,b=6输出:4解释:12和6的公因子是1、2、3、6。示例2:输入:a=25,b=30输出:2解释:25和30的公因子是1、5。提示:1<=a,......
  • 力扣-1512-好数对的数目
    给你一个整数数组nums。如果一组数字(i,j)满足nums[i]==nums[j]且i<j,就可以认为这是一组好数对。返回好数对的数目。 示例1:输入:nums=[1,2,3,1,1,3]输出:4解释:有4组好数对,分别是(0,3),(0,4),(3,4),(2,5),下标从0开始示例2:输入:nums=[1,1,1,1]输出......
  • 可以被K整除连通块的最大数目
    给你一棵n个节点的无向树,节点编号为0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi有一条边同时给你一个下标从0开始长度为n的整数数组values,其中values[i]是第i个节点的值。再给你一个整数......
  • 花期内花的数目
    给你一个下标从0开始的二维整数数组flowers其中flowers[i]=[starti,endi]表示第i朵花的花期从starti到endi同时给你一个下标从0开始大小为n的整数数组people,people[i]是第i个人来看花的时间请你返回一个大小为n的整数数组answer,其中answer[i]是第i......
  • [LeetCode] 2251. 花期内花的数目 - 二分查找/有序数组
    Problem:2251.花期内花的数目思路看题目应该是一道比较经典的差分,本来准备拿差分数组做的,后来搂了一眼题解,发现用二分的方法更简单解题方法此题有一种很简便的方法,第i个人到达时间为people[i],所以我们不难找到在这个时间之前花期已经开始的花的数量,即v1=start<=people[i]......
  • LC2251 花期内花的数目
    方法一:差分因为是先修改后查询,很容易想到差分,但因为数据值域\([-10^9,10^9]\)过大,所以不能使用差分数组,而应用map进行存储,如代码所示:map<int,int>diff;//正常进行差分操作for(auto&f:flowers){diff[f[0]]++;diff[f[1]+1]--;}//dosomethingautoit......