leetcode 1552. 两球之间的磁力(二分)

本文介绍了一种使用二分查找策略解决Rick和Morty磁力问题的方法。Rick拥有n个篮子,Morty需放置m个球以最大化任意两球间的最小磁力。通过代码实现,博主展示了如何通过比较球的位置和设定的磁力阈值来找到最优解决方案。
摘要由CSDN通过智能技术生成

题目链接
在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。

已知两个球如果分别位于 x 和 y ,那么它们之间的磁力为 |x - y| 。

给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力。

解析:二分答案即可

class Solution:
    def maxDistance(self, position: List[int], m: int) -> int:
        #二分枚举最小磁力,
        l=1
        len_p=len(position)
        r=1e9
        ans=0
        position.sort()
        while l<=r:
            mid=int((l+r)/2)
            now=1
            pre=position[0]
            for i in range(1,len_p):
                if position[i]-pre>=mid:
                    now+=1
                    pre=position[i]
            if now>=m:
                ans=mid
                l=mid+1
            else :
                r=mid-1
        return ans 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值