用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