在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。

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

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

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

示例 1:

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

示例 2:

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

提示:

1 <= seats.length <= 20000
seats 中只含有 0 和 1,至少有一个 0,且至少有一个 1。

思路分析:\color{blue}思路分析:思路分析:这道题我们只要找到最大的空位置连续段即可,然后将连续空位置长度除2(人坐在这段连续空位置段中间),这样就可以找到一个结果。
蛋式有两种特殊情况,就是分别在首端、尾端的连续空位置段,比如[1,0,0,0]这时尾端出现空位置段,坐在seats[3]才是最终结果。
因此首端出现连续空位置段,坐在第一个位置才是最好的选择,尾端出现连续空位置段,坐在最后一个位置才是最好的选择。

class Solution {public:int maxDistToClosest(vector<int>& seats) {int maxRes = 0, index = 0;int beforeIndex = 0, seatsSize = seats.size();//beforeIndex记录空位置段的前一个坐了人的下标//如果首端出现了连续的空位置段while (seats[index] == 0){++index;}maxRes = index;//坐在第一个位置while (index < seatsSize){//跳过坐了人的位置while (index < seatsSize && seats[index] == 1){++index;}//确定连续空位置区间beforeIndex = index - 1;while (index < seatsSize && seats[index] == 0){++index;}//更新最大结果if (index == seatsSize){//连续的空位置出现尾端,坐在尾端maxRes = max(maxRes, index - beforeIndex - 1);}else{//坐在空位置段的中间maxRes = max(maxRes, (index - beforeIndex) / 2);}}return maxRes;}
};


也可以直接计算空位置的长度。注意如果空位置长度为奇数比如[1, 0, 0, 0,1]结果是(3 + 1)/ 2 ,因为距离是间隔,而空位置的长度是座位个数。

class Solution {public:int maxDistToClosest(vector<int>& seats) {int maxRes = 0, index = 0;int seatsSize = seats.size();//如果首端出现了连续的空位置段while (seats[index] == 0){++index;}maxRes = index;//坐在第一个位置while (index < seatsSize){//跳过坐了人的位置while (index < seatsSize && seats[index] == 1){++index;}int emptySeatCount = 0;//连续空位置段长度while (index < seatsSize && seats[index] == 0){++index;++emptySeatCount;}//更新最大结果if (index == seatsSize){//连续的空位置出现尾端,坐在尾端maxRes = max(maxRes, emptySeatCount);}else{//坐在空位置段的中间maxRes = max(maxRes, (emptySeatCount + 1) / 2);}}return maxRes;}
};

LeetCode 到最近的人的最大距离相关推荐

  1. LeetCode 849. 到最近的人的最大距离

    1. 题目 在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的. 至少有一个空座位,且至少有一人坐在座位上. 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座 ...

  2. C#LeetCode刷题之#849-到最近的人的最大距离(Maximize Distance to Closest Person)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3754 访问. 在一排座位( seats)中,1 代表有人坐在座位 ...

  3. 849. 到最近的人的最大距离

    在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的. 至少有一个空座位,且至少有一人坐在座位上. 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上. 返回 ...

  4. LeetCode849. 到最近的人的最大距离

    在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的. 至少有一个空座位,且至少有一人坐在座位上. 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上. 返回 ...

  5. LeetCode MySQL 1623. 三人国家代表队

    文章目录 1. 题目 2. 解题 1. 题目 表: SchoolA +---------------+---------+ | Column Name | Type | +-------------- ...

  6. LeetCode 1855. 下标对中的最大距离(双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个 非递增 的整数数组 nums1​​​​​​ 和 nums2​​​​​​ ,数组下标均 从 0 开始 计数. 下标对 (i, j) 中 0 < ...

  7. LeetCode 624. 数组列表中的最大距离

    文章目录 1. 题目 2. 解题 2.1 暴力超时 2.2 优化 1. 题目 给定 m 个数组,每个数组都已经按照升序排好序了. 现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们 ...

  8. LeetCode 考场就座

    在考场里,一排有 N 个座位,分别编号为 0, 1, 2, -, N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上.如果有多个这样的座位,他会坐在编号最小的座 ...

  9. C#LeetCode刷题-数组

    数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...

  10. LeetCode题解目录

    最新更新于2020.11.27 前往LeetCode主页. 前往GitHub源码.(服务器原因,暂停同步.) 前往码云主页. 已解决 456/1878 - 简单353 中等 90 困难 13 2020 ...

最新文章

  1. 关于System.TypeInitializationException异常
  2. Tomcat相关面试题,看这篇就够了!保证能让面试官颤抖!
  3. python爬虫简单示例_最简单爬虫示例(入门级)
  4. 卡方分布的期望和方差_T检验、F检验、卡方检验详细分析及应用场景总结
  5. success for advertisement
  6. 技术实践 | Android Flutter 多实例实践
  7. pytorch 之 有关交叉熵函数使用的几点说明
  8. 离开小厂进大厂的第一周,BTAJ大厂最新面试题汇集,面试总结
  9. win10安装ensp启动40_装系统不求人,快速制作启动U盘,傻瓜式重装WIN10
  10. endnote怎么改成中文版_毕业论文面对大量的参考文献标注,应该怎么办?(便捷整理的技巧和方法)...
  11. 星形和雪花模型_数据仓库多维数据模型设计
  12. OpenMP模式下多线程文件操作 (转)
  13. MySql explain命令详解
  14. 7.1 pdo 宝塔面板php_腾讯云服务器建站系列 – 熟练宝塔面板部署网站/快速安装HTTPS加密...
  15. Linux自学之旅-基础命令(Ext4文件系统)
  16. oracle中文谐音,Treasure的歌词中文翻译?? bruno mars 唱的treasure中文歌词谐音 谁懂啊?帮......
  17. leetcode 53. Maximum Subarray(DP动态规划问题)
  18. eNSP基础实验交换机连接路由器(二层交换机和三层交换机)
  19. 如何使用Better Zip软件的密码保护功能
  20. adb 连接安卓手机远程调试

热门文章

  1. 基于PaddleX的垃圾分类识别
  2. Mac电脑高质量神器——超级右键
  3. 信道、频段带宽等术语简介
  4. [ERROR] [FATAL] InnoDB: Over 95 percent of the buffer pool is occupied by lock heaps or the adaptive
  5. 解决fatal: No configured push destination.
  6. ES测试数据,kibana命令
  7. ubuntu server 20.04安装vnc远程桌面xfce4
  8. Command line is too long. Shorten command line for Application or also for Spring Boot default...
  9. 微醺时代的白酒新锐:政策“理想”与现实“骨感”的夹缝进击
  10. 计算机思维导论raptor实验报告,计算机基础实验报告Raptor.pdf