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
参考:
参考题解