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});//选择最大值
    }
};
相关文章
|
SQL 存储 关系型数据库
MySQL创建数据表(CREATE TABLE语句)
MySQL创建数据表(CREATE TABLE语句)
1606 0
|
11月前
微软代码签名证书新手篇
要使软件及驱动被微软信任,需通过微软认证,主体须为成立3个月以上、经营正常的公司。认证流程包括在线提交、实名审核(1-5工作日)、UK制作与快递(7-15天)。建议申请2-3年有效期,确保业务连续性。申请前需准备身份证扫描件、确认单位英文名称,并在获得代码签名证书后对驱动软件进行签名,以便提交微软WHQL认证。
208 1
|
8月前
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
913 4
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
|
缓存 运维 监控
打造稳定高效的数据引擎:数据库服务器运维最佳实践全解析
打造稳定高效的数据引擎:数据库服务器运维最佳实践全解析
|
存储 Kubernetes 调度
Kubernetes 中存储使用介绍(PV、PVC和StorageClass)
在 Kubernetes 中的应用,都是以 Pod 的形式运行的,当我们要是在 Kubernetes 上运行一些需要存放数据的应用时,便需要关注应用存放的数据是否安全可靠。因为 Pod 是有生命周期的,那么也就是说当 Pod 被删除或重启后,Pod 里面所运行的数据也会随之消失。
2650 0
Kubernetes 中存储使用介绍(PV、PVC和StorageClass)
|
消息中间件 负载均衡 Java
Spring Cloud 2023常见20道面试题
以下是20个2023年面试中可能会遇到的Spring Cloud常见问题以及参考答案:
1722 0
|
10月前
|
搜索推荐 API 开发者
虾皮根据关键词取商品列表API接口的开发应用与收益
虾皮根据关键词取商品列表API接口的开发与应用为电商数据分析与应用提供了强大的支持。通过这一接口,开发者可以快速获取商品信息,实现精准营销、市场趋势分析、商品推荐等多种应用。同时,这一接口也为电商平台带来了提升用户体验、增加用户流量、提高运营效率等多重收益。随着电商行业的不断发展,虾皮的API接口将在未来发挥更加重要的作用,推动电商行业的数字化转型和智能化发展。
137 2
|
JSON 前端开发 JavaScript
Web中的客户端和服务器端
Web中的客户端和服务器端
634 1
|
运维 Kubernetes Cloud Native
云原生时代的运维革新:容器化与自动化的实践之路
在数字化转型的浪潮中,云原生技术成为企业IT架构演进的核心。本文深入探讨了如何借助容器化技术和自动化工具,实现高效、灵活的运维管理,旨在为读者揭示现代运维面临的挑战及应对策略,同时分享实际案例,展现云原生时代下运维革新的力量。
|
SQL Java 数据库连接
SSMP整合案例第二步 数据层dao开发及实现特殊查询
SSMP整合案例第二步 数据层dao开发及实现特殊查询
80 0