用Python查找最小半径以照亮街道上所有房屋的程序

假设我们有一个称为nums的数字列表,代表一维房屋的位置。现在考虑我们有3条路灯,我们可以将其放在线路上的任何位置,位置x处的灯照亮[x-r,x + r]范围内的所有房屋。我们必须找到点亮所有房屋所需的最小r。

因此,如果输入像nums = [4,5,6,7],那么输出将是0.5,因为我们可以将灯放在4.5、5.5和6.5上,所以r = 0.5。因此,这三盏灯可以点亮所有4栋房屋。

在线示例

让我们看下面的实现以更好地理解-

class Solution:

   def solve(self, nums):

      def valid(r):

         last_location = nums[0] + r

         count = 1

         for i in range(len(nums)):

            val = nums[i]

            if val - last_location > r:

               count += 1

               last_location = val + r

         return count <= 3

      nums.sort()

      left = 0

      right = nums[-1]

      res = float("inf")

      itr = 0

      while left <= right and itr < 20:

         mid = left + (right - left) / 2

         if valid(mid):

            res = min(res, mid)

            right = mid

         else:

            left = mid

         itr += 1

      return res

ob = Solution()

nums = [4,5,6,7]

print(ob.solve(nums))

输入值

[4,5,6,7]
输出结果
0.5

以上是 用Python查找最小半径以照亮街道上所有房屋的程序 的全部内容, 来源链接: utcz.com/z/326304.html

回到顶部