leetcode 849 到最近的人的最大距離

2021-08-22 19:13:07 字數 1263 閱讀 2032

在一排座位( 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。

將seats中為1的索引找出來

求取所有兩個1的索引間距的一半,選取最大值

判斷一開始不是1,和最後不是1的情況

class

solution:

defmaxdisttoclosest

(self, seats):

""" :type seats: list[int]

:rtype: int

"""lens = len(seats)

#將seats中為1的索引找出來

oneindex = [i for i in range(lens) if seats[i] == 1]

lenone = len(oneindex)

#求取所有兩個1的索引間距的一半,選取最大值

maxr = max([oneindex[i+1]-oneindex[i] for i in range(lenone-1)]+[0])//2

if seats[0] == 0:

maxr = max(maxr,oneindex[0]-0)

if seats[-1] == 0:

maxr = max(maxr,lens-1-oneindex[-1])

return maxr

LeetCode849 到最近的人的最大距離

在一排座位 seats 中,1代表有人坐在座位上,0代表座位上是空的。至少有乙個空座位,且至少有一人坐在座位上。亞歷克斯希望坐在乙個能夠使他與離他最近的人之間的距離達到最大化的座位上。返回他到離他最近的人的最大距離。示例 1 輸入 1,0,0,0,1,0,1 輸出 2 解釋 如果亞歷克斯坐在第二個空...

Leetcode 849 到最近的人的最大距離

在一排座位 seats 中,1代表有人坐在座位上,0代表座位上是空的。至少有乙個空座位,且至少有一人坐在座位上。亞歷克斯希望坐在乙個能夠使他與離他最近的人之間的距離達到最大化的座位上。返回他到離他最近的人的最大距離。示例 1 輸入 1,0,0,0,1,0,1 輸出 2解釋 如果亞歷克斯坐在第二個空位...

LeetCode 849 到最近的人的最大距離

在一排座位 seats 中,1 代表有人坐在座位上,0 代表座位上是空的。至少有乙個空座位,且至少有一人坐在座位上。亞歷克斯希望坐在乙個能夠使他與離他最近的人之間的距離達到最大化的座位上。返回他到離他最近的人的最大距離。示例 1 輸入 1,0,0,0,1,0,1 輸出 2 解釋 如果亞歷克斯坐在第二...