题目链接:1620. 网络信号最好的坐标
解题思路
由图可以知道,我们的目标点只可能在红色虚线框内。因此,我们首先要确定目标点的范围。即存在的信号塔的最大范围 x_min, x_max, y_min, y_max
。
然后就循环遍历在这个范围内的所有点,找到最合适的那一个。
代码
class Solution:
def bestCoordinate(self, towers: List[List[int]], radius: int) -> List[int]:
# 定义范围
x_max = max([t[0] for t in towers])
x_min = min([t[0] for t in towers])
y_max = max([t[1] for t in towers])
y_min = min([t[1] for t in towers])
cx, cy, best_power = 0, 0, 0
# 遍历
for i in range(x_min, x_max + 1):
for j in range(y_min, y_max + 1):
power = 0
for x, y, q in towers:
dis = (x - i) ** 2 + (y - j) ** 2
if dis <= radius ** 2:
power += floor(q / (1 + dis ** 0.5))
if power > best_power:
best_power = power
cx, cy = i, j
return [cx, cy]