LeetCode 到最近的人的最大距離

2021-09-24 02:30:08 字數 1655 閱讀 4894

在一排座位( 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思路分析:

思路分析

:這道題我們只要找到最大的空位置連續段即可,然後將連續空位置長度除2(人坐在這段連續空位置段中間),這樣就可以找到乙個結果。

蛋式有兩種特殊情況,就是分別在首端、尾端的連續空位置段,比如[1,0,0,0]這時尾端出現空位置段,坐在seats[3]才是最終結果。

因此首端出現連續空位置段,坐在第乙個位置才是最好的選擇,尾端出現連續空位置段,坐在最後乙個位置才是最好的選擇。

class

solution

maxres = index;

//坐在第乙個位置

while

(index < seatssize)

//確定連續空位置區間

beforeindex = index -1;

while

(index < seatssize && seats[index]==0

)//更新最大結果

也可以直接計算空位置的長度。注意如果空位置長度為奇數比如[1, 0, 0, 0,1]結果是(3 + 1)/ 2 ,因為距離是間隔,而空位置的長度是座位個數。

class

solution

maxres = index;

//坐在第乙個位置

while

(index < seatssize)

int emptyseatcount =0;

//連續空位置段長度

while

(index < seatssize && seats[index]==0

)//更新最大結果

if(index == seatssize)

else

}return maxres;}}

;

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

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

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解釋 如果亞歷克斯坐在第二個空位...