给你一个数组
points
,其中points[i] = [xi, yi]
,表示第i
个点在二维平面上的坐标。多个点可能会有 相同 的坐标。同时给你一个数组
queries
,其中queries[j] = [xj, yj, rj]
,表示一个圆心在(xj, yj)
且半径为rj
的圆。对于每一个查询
queries[j]
,计算在第j
个圆 内 点的数目。如果一个点在圆的 边界上 ,我们同样认为它在圆 内 。请你返回一个数组
answer
,其中answer[j]
是第j
个查询的答案。
看到这题的时候我脑子里闪过了许多想法:离线查询,二维累加和数组……但是都不行,还是暴力吧
思路:双重循环计算每个点到圆点的距离,如果小于等于半径,则证明在圆内
实现
class Solution {public int[] countPoints(int[][] points, int[][] queries) {int n = queries.length;int[] ans = new int[n];for (int i = 0; i < n; i++){for (int[] p : points){double dis = Math.pow(p[0] - queries[i][0], 2) + Math.pow(p[1] - queries[i][1], 2);if (dis <= Math.pow(queries[i][2], 2)){ans[i]++;}}}return ans;}
}