https://leetcode.com/problems/maximize-distance-to-closest-person/

在一排座位( 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. 1 <= seats.length <= 20000
  2. seats 中只含有 0 和 1,至少有一个 0,且至少有一个 1

最开始的想法比较朴素,也比较好实现,就是找出哪些位置上有人买了,比较一下距离就好了,当然这里题目要求是至少有1的情况的

Maximize Distance to Closest Person-LMLPHP

然后看到别人的提交,是比较简洁的,这里主要考虑连续的0的长度,考虑连续的时候,比较是有几个1包围的,可能是001,100,101这三种情况

Maximize Distance to Closest Person-LMLPHP

但是这样理解起来不是很方便,所以我自己是按照以下的方式写的,看着会臃肿一点,没有那么简洁!

Maximize Distance to Closest Person-LMLPHP

未完待续!

05-08 02:35