这是第四篇算法,力扣链接
给你一个数组
points
,其中points[i] = [xi, yi]
,表示第i
个点在二维平面上的坐标。多个点可能会有 相同 的坐标。同时给你一个数组
queries
,其中queries[j] = [xj, yj, rj]
,表示一个圆心在(xj, yj)
且半径为rj
的圆。对于每一个查询
queries[j]
,计算在第j
个圆 内 点的数目。如果一个点在圆的 边界上 ,我们同样认为它在圆 内 。请你返回一个数组
answer
,其中answer[j]
是第j
个查询的答案。
不要被所谓的圆心迷惑,其实就是两点之间距离公式的应用,两点之间距离公式为,将问题转换为n个points的点到圆心(querties[0],querties[1])的距离小于等于querties[2]的个数。
得出代码如下:
func countPoints(points [][]int, queries [][]int) []int {
result := make([]int, len(queries))
for i, q := range queries {
x, y, dis := q[0], q[1], q[2]
for _, p := range points {
if (x-p[0])*(x-p[0])+(y-p[1])*(y-p[1]) <= dis*dis {
result[i]++
}
}
}
return result
}