C++ 暴力枚举,没有花里胡哨的。题目是网络信号最好的坐标,不是网络信号最好的塔
class Solution {
public:
vector<int> bestCoordinate(vector<vector<int>>& towers, int radius) {
int maxX = 0, maxY = 0;
int minX = towers[0][0], minY = towers[0][1];
for(int i = 0; i < towers.size(); i++)
{
if(towers[i][0] > maxX) maxX = towers[i][0];
if(towers[i][0] < minX) minX = towers[i][0];
if(towers[i][1] > maxY) maxY = towers[i][1];
if(towers[i][1] < minY) minY = towers[i][1];
}
vector<int> res = {0, 0};
int maxSum = 0;
for(int i = minX; i < maxX + 1; i++)
{
for(int j = minY; j < maxY + 1; j++)
{
int sum = 0;
for(int k = 0; k < towers.size(); k++)
{
int d = (i - towers[k][0]) * (i - towers[k][0]) + (j - towers[k][1]) * (j - towers[k][1]);
if(radius * radius < d)
continue;
sum += towers[k][2] / (1 + sqrt(d));
}
if(sum > maxSum)
{
maxSum = sum;
res = {i, j};
}
else if(sum == maxSum && (i < res[0] || (i == res[0] && j < res[1])))
res = {i, j};
}
}
return res;
}
};