小米笔试题-最好信号塔位置问题

题目描述

在这里插入图片描述

解题思路

一开始将题目的意思理解错了,写代码写到一半发现,好像是要找位置,不是单纯的根据已知坐标求取位置。那该怎么考虑呢。。。。。。不好意思,看了题解。主要分为两种情况,一种就是x大于横坐标的最大值或者y坐标大于纵坐标的最大值。这种情况,可以很清楚的考虑清楚,这个就是坐标的终止条件。
另一种情况就是小于0的情况,由于坐标的均大于0(题目规定),所以任意一信号塔达到0,0的距离肯定小于到达负坐标的位置,综上,得到求取坐标的范围[0,xmax],[0,ymax]。不知道大家能否理解我说的意思。

代码实现

class Solution:
    def bestCoordinate(self, towers: List[List[int]], radius: int) -> List[int]:
        #定义一个二维数组,这个里面存放的就是欧式距离
        xmax=max([t[0] for t in towers])
        ymax=max([t[1] for t in towers])
        cx=cy=maxquality=0
        for x in range(xmax+1):
            for y in range(ymax+1):
                quality=0
                for tx,ty,q in towers:
                    d=(x-tx)**2+(y-ty)**2
                    if d<=radius**2:
                        quality+=int(q/(1+d**0.5))
                if quality>maxquality:
                    cx,cy,maxquality=x,y,quality
        return [cx,cy]



  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值