1. 程式人生 > >Maximize Distance to Closest Person

Maximize Distance to Closest Person

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的情況的

然後看到別人的提交,是比較簡潔的,這裡主要考慮連續的0的長度,考慮連續的時候,比較是有幾個1包圍的,可能是001,100,101這三種情況

但是這樣理解起來不是很方便,所以我自己是按照以下的方式寫的,看著會臃腫一點,沒有那麼簡潔!

未完待續!