1552. 两球之间的磁力 LeetCode第202场周赛

1552. 两球之间的磁力 LeetCode第202场周赛

传送门

传送门

结题思路

思路1:由题意,可知,最小磁力为1,最大磁力为position的最大值减最小值//m-1,所以所求的最大化的最小磁力肯定在[最小磁力,最大磁力]之间。使用二分搜索,若最小磁力满足,能换一个更大一点的距离,此磁力满足的条件是,从第一个元素开始按此磁力摆放或更大的磁力摆放到超越此数组后,m个小球均摆放完。

class Solution(object):
    def maxDistance(self, position, m):
        """
        :type position: List[int]
        :type m: int
        :rtype: int
        """
        position.sort()
        low = 1
        res = 1
        hi = (position[-1]-position[0]) // m-1
        while(low <= hi):
            mid = (hi - low) // 2
            if(self.checkBai(position, mid, m)):
                res = low
                low = mid
            else:
                hi = mid
        return low

    def checkBai(self, position, mid, m):
        count = 1
        i = 0
        for j in range(len(position)):
            if(position[j] - position[i] >= mid):
                i = j
                ++count
                if(count == m):
                    return True
        return False

参考:
参考题解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值