给你一个数组
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;}
}