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

参考:
参考题解

猜你喜欢

转载自blog.csdn.net/qq_40092110/article/details/108137865