LeetCode
1620. 网络信号最好的坐标
链接: link
思路
直接一波暴力,超过25%
代码
class Solution {
public int[] bestCoordinate(int[][] towers, int radius) {
int xmin = 0, xmax = 0, ymin = 0, ymax = 0;
for(int[] t: towers){
xmin = Math.min(xmin, t[0]);
xmax = Math.max(xmax, t[0]);
ymin = Math.min(ymin, t[1]);
ymax = Math.max(ymax, t[1]);
}
int r2 = radius * radius;//距离的平方
int strongest = Integer.MIN_VALUE, strongestX = Integer.MIN_VALUE, strongestY = Integer.MIN_VALUE;
for(int x = xmin - radius; x <=xmax + radius; x++){
if(x < 0)
continue;//题目要求返回非负坐标
for(int y = ymin - radius; y <= ymax + radius; y++){
if(y < 0)
continue;//题目要求返回非负坐标
int quality = 0;
for(int[] t: towers){
int dis2 = (t[0] - x) * (t[0] - x) + (t[1] - y) * (t[1] - y);
if(dis2 <= r2)//距离小于radius
quality += Math.floor(t[2] / (1 + Math.sqrt(dis2)));//向下取整
}
if(quality > strongest){//要求字典序最小,不能加等号
strongest = quality;
strongestX = x;
strongestY = y;
}
}
}
return new int[]{strongestX, strongestY};
}
}