binarysearch Minimum Light Radius

简介: 代码如下

问题


You are given a list of integers nums representing coordinates of houses on a 1-dimensional line. You have 3 street lights that you can put anywhere on the coordinate line and a light at coordinate x lights up houses in [x - r, x + r], inclusive. Return the smallest r required such that we can place the 3 lights and all the houses are lit up.


Constraints


n ≤ 100,000 where n is the length of nums


Example 1
Input
nums = [3, 4, 5, 6]
Output
0.5
Explanation
If we place the lamps on 3.5, 4.5 and 5.5 then with r = 0.5 we can light up all 4 houses.

思路

根据最左二分法的模板逐步遍历

代码

  • 语言支持:Python3

Python3 Code:

class Solution:
    def solve(self, nums):
        if len(nums) <= 3:
            return 0
        nums.sort()
        def possible(d):
            start = nums[0]
            end = start + d
            for i in range(3):
                index = bisect.bisect_right(nums, end)
                if index >= len(nums):
                    return True
                start = nums[index]
                end = start + d
            return False
        l, r = 0, nums[-1] - nums[0]
        while l <= r:
            mid = (l + r) // 2
            if possible(mid):
                r = mid - 1
            else:
                l = mid + 1
        return l / 2

复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(nlogn)O(nlogn)O(nlogn)
  • 空间复杂度:O(1)O(1)O(1)
目录
相关文章
|
2月前
|
前端开发 JavaScript
【HTML+CSS+JavaScript】3d-boxes-background
【HTML+CSS+JavaScript】3d-boxes-background
23 0
Mysterious Light——AT
题目描述 Snuke is conducting an optical experiment using mirrors and his new invention, the rifle of Mysterious Light. Three mirrors of length N are set so that they form an equilateral triangle. Let the vertices of the triangle be a,b and c.
116 0
Mysterious Light——AT
|
编解码
px、em、rem区别 pt ppi dpi vw vh
px、em、rem区别 pt ppi dpi vw vh
142 0
px、em、rem区别 pt ppi dpi vw vh
|
算法
Transition matrix
**Transition matrix** 中文名:转移矩阵;转换矩阵;跃迁矩阵;状态转移矩阵
2597 0