1620. 网络信号最好的坐标

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};
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值