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)
目录
相关文章
|
Linux
CentOS7下使用growpart工具进行磁盘热扩容
CentOS7下使用growpart工具进行磁盘热扩容
1129 0
CentOS7下使用growpart工具进行磁盘热扩容
|
Kubernetes Java Nacos
nacos常见问题之通过helm方式部署设置开启授权认证功能如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
1072 0
|
人工智能 Go
G - MaratonIME does a competition
G - MaratonIME does a competition
|
存储 NoSQL 前端开发
短信登录实现(黑马点评为例)
短信登录实现(黑马点评为例)
753 0
|
前端开发
Canvas 在 VSCode 中如何代码提示补全
Canvas 在 VSCode 中如何代码提示补全
508 0
|
JavaScript 数据可视化 前端开发
jquery 选择器总结
jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("div") 选择所有的div标签元素,返回div元素数组 $(".
1174 0
|
SQL 关系型数据库 Oracle
SQL AUTO INCREMENT 字段
1、用于 SQL Server 的语法 下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键: CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Ad
1018 0
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。