力扣(LeetCode)1620. 网络信号最好的坐标(C++)

一、环境说明

  1. 本文是 LeetCode1620. 网络信号最好的坐标。
  2. 暴力。
  3. 测试环境:Visual Studio 2019。

二、思路分析

三重循环

提示:所有塔都是正坐标,那么信号最好的点一定是正坐标,不用考虑负坐标。

遍历 { x ( 0 , 50 ) , y ( 0 , 50 ) } \{x(0,50),y(0,50)\} {x(0,50),y(0,50)}的点, 2601 2601 2601个点。和 a u t o   p : t o w e r s auto\ p:towers auto p:towers比较。 2601 × 50 = 130050 2601\times50 = 130050 2601×50=130050。问题规模合适。

  • 距离 d = ( p [ 0 ] − x ) × ( p [ 0 ] − x ) + ( p [ 1 ] − y ) × ( p [ 1 ] − y ) d = \sqrt{(p[0]-x)\times(p[0]-x)+(p[1]-y)\times(p[1]-y)} d=(p[0]x)×(p[0]x)+(p[1]y)×(p[1]y)
  • 信号 q = p [ 2 ] ÷ ( 1 + d ) q = p[2] \div (1 + \sqrt{d}) q=p[2]÷(1+d )

暴力循环天然按照字典序遍历,所以只要保存第一次出现的 m a x max max的坐标,即为所求。

三、代码展示

class Solution {
public:
    vector<int> bestCoordinate(vector<vector<int>>& towers, int radius) {
        int max = 0;//最大信号
        vector<int> ans={0,0};
        for(int x = 0;x<=50;x++)
            for(int y = 0;y<=50;y++){
                int q=0;//q当前信号
                for(auto p:towers){//遍历每个towers
                    double d = sqrt((p[0]-x)*(p[0]-x)+(p[1]-y)*(p[1]-y));
                    if(d<=radius) q += p[2] / (1 + d);
                }
                if(max<q){
                    max = q;
                    ans = {x,y};
                }
            }
        return ans;
    }
};

四、博主致语

理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。

五、AC

丢人时间

六、复杂度分析

  1. 时间复杂度: O ( x × y × n ) O(x\times y\times n) O(x×y×n) , n n n t o w e r s towers towers的总数, x x x是塔的 x x x坐标范围, y y y是塔的 y y y坐标范围。三重循环的时间复杂度是 O ( x × y × n ) O(x\times y\times n) O(x×y×n)
  2. 空间复杂度: O ( 1 ) O(1) O(1),只使用到了常量级空间,没有使用额外的线性空间。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清墨韵染

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值