给你一个数组 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 <= 500points[i].length == 20 <= xi, yi <= 5001 <= queries.length <= 500queries[j].length == 30 <= xj, yj <= 5001 <= rj <= 500- 所有的坐标都是整数。
暴力枚举:
class Solution {
public:
vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {
vector<int> ans(queries.size(),0);//初始化返回数组
int i = 0;
for(auto&& querie:queries){
for(auto&& point:points){
if(sqrt((point[0]-querie[0])*(point[0]-querie[0])+(point[1]-querie[1])*(point[1]-querie[1]))<=querie[2]){
ans[i]++;
}
}
i++;
}
return ans;
}
};
该问题是一个编程挑战,给定一组点的坐标和一系列圆的查询,要求计算每个圆内包含的点的数量,包括边界上的点。提供的暴力枚举解法遍历所有点并计算它们到圆心的距离,如果在半径范围内则计数。
8566

被折叠的 条评论
为什么被折叠?



