leetcode-849:到最近的人的最大距离

简介: leetcode-849:到最近的人的最大距离

题目

题目连接

给你一个数组seats 表示一排座位,其中 seats[i] = 1 代表有人坐在第 i 个座位上,seats[i] = 0 代表座位 i 上是空的(下标从 0 开始)。

至少有一个空座位,且至少有一人已经坐在座位上。

亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。

返回他到离他最近的人的最大距离。

示例 1:

输入:seats = [1,0,0,0,1,0,1]
输出:2
解释:
如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。
如果亚历克斯坐在其它任何一个空位上,他到离他最近的人的距离为 1 。
因此,他到离他最近的人的最大距离是 2 。 

示例 2:

输入:seats = [1,0,0,0]
输出:3
解释:
如果亚历克斯坐在最后一个座位上,他离最近的人有 3 个座位远。
这是可能的最大距离,所以答案是 3 。

示例 3:

输入:seats = [0,1]
输出:1

解题

方法一:一次遍历

总共有三种情况

  • 1.计算左边第一个有人的位置到左边的第一个位置距离(亚历克斯可以坐到最左边)
  • 2.计算最右边有人的位置到最后一个位置距离(亚历克斯可以坐到最右边)
  • 3.计算两个有人位置间的距离(亚历克斯可以坐到两个人中间)

取这三种情况的最大值就行了。

class Solution {
public:
    int maxDistToClosest(vector<int>& seats) {
        int n=seats.size();
        int first,pre,last;//记录最左边的有人的座位、上一个有人的座位、最后一个有人的座位
        int maxInterval=INT_MIN;//记录两个座位之间最大间距
        int count=0;
        for(int i=0;i<n;i++){
            if(seats[i]==1){
                if(count==0){//如果是第一个有人的座位
                    first=i;
                    last=i;
                }else if(count>=1){//如果是第一个以后 有人的座位
                    pre=last;
                    last=i;
                    maxInterval=max(maxInterval,last-pre);//保存当前有人的座位和上一个有人的座位 的 最大间距
                }
                count++;
            }
        }
        return max({first,n-1-last,maxInterval/2});//选择最大值
    }
};
相关文章
|
1月前
|
人工智能 运维 网络安全
OpenClaw(Clawdbot)阿里云/本地零基础部署:+S0-S3三步法,让AI Agent精准执行高难度任务!
AI代理工具的核心价值,在于处理人类不想重复的复杂工作——但多数工具面对任务时要么“一刀切”(所有任务走同一流程,浪费资源),要么“冒进执行”(跳过评估直接操作,复杂任务易失败)。就像让外科医生用同一套流程处理纸片割伤和心脏搭桥,效率与成功率双低。
373 1
|
2月前
|
SQL 安全 算法
Python 3.14 正式发布:七大重磅新特性详解
Python 3.14(2025.10发布)重磅升级:新增安全模板字符串(t-strings)、远程进程调试(pdb -p)、Zstandard标准压缩、注解默认延迟求值、智能语法纠错、统一compression命名空间及asyncio任务可视化工具,全面提升安全性、开发效率与运行性能。(239字)
291 1
|
4月前
|
安全 C# 开发者
高效使用C#随机数生成器(小白也能掌握的Random复用策略)
本文详解C#随机数生成器(Random类)的常见误区与正确用法。频繁新建Random实例会导致种子重复,生成相同“随机数”。推荐复用静态实例或使用.NET 6+的Random.Shared,确保高效、线程安全的随机数生成,提升代码质量与性能。
|
5月前
|
人工智能 自然语言处理 语音技术
数字人:不止于“虚拟形象”的技术综合体
数字人是融合3D建模、AI驱动与实时渲染的虚拟交互体,涵盖“躯壳、小脑、大脑”三层技术架构。依托云计算与AIGC,正广泛应用于客服、XR等场景。开发者可借云服务快速构建,迎来全新机遇。
|
7月前
|
Shell Linux
九、Linux Shell脚本:运算符与表达式
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
510 0
|
人工智能 分布式计算 搜索推荐
元宇宙:通往未来数字世界的入口
【10月更文挑战第27天】元宇宙,一个融合虚拟现实、增强现实、人工智能和区块链等技术的多维度数字世界,正成为连接现实与虚拟的桥梁。它不仅提供沉浸式的社交、娱乐和商业体验,还预示着数字时代的深刻变革,对经济、文化和社会产生深远影响。本文探讨元宇宙的定义、特征、关键技术及其未来影响。
1014 2
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
1486 4
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
微软代码签名证书新手篇
要使软件及驱动被微软信任,需通过微软认证,主体须为成立3个月以上、经营正常的公司。认证流程包括在线提交、实名审核(1-5工作日)、UK制作与快递(7-15天)。建议申请2-3年有效期,确保业务连续性。申请前需准备身份证扫描件、确认单位英文名称,并在获得代码签名证书后对驱动软件进行签名,以便提交微软WHQL认证。
418 1
|
JSON 前端开发 JavaScript
Web中的客户端和服务器端
Web中的客户端和服务器端
1069 1
|
边缘计算 物联网 vr&ar
一文带你彻底了解Wi-Fi 7
【9月更文挑战第1天】
1959 0
一文带你彻底了解Wi-Fi 7

热门文章

最新文章