Python程式:查詢空座位和佔用座位之間的最大距離
假設我們有一個列表seats,其中只包含0和1,seats[i]表示一個座位。當它為1時,表示佔用,否則為空閒。至少有一個空座位和至少一個佔用座位,我們需要找到從一個空座位到最近的佔用座位的最大距離。
因此,如果輸入類似seats = [1, 0, 1, 0, 0, 0, 1],則輸出將為2,因為我們可以佔用seats[4],則距離為2。
為了解決這個問題,我們將遵循以下步驟:
res := 0
last := -1
n := seats的大小
對於範圍從0到n-1的i,執行以下操作:
如果seats[i]為1,則:
res := res和(如果last < 0則為i,否則為(i-last)/2的下取整)中的最大值
last := i
返回res和(n-last-1)中的最大值
示例
讓我們看看下面的實現,以便更好地理解
def solve(seats):
res, last, n = 0, -1, len(seats)
for i in range(n):
if seats[i]:
res = max(res, i if last < 0 else (i - last) // 2)
last = i
return max(res, n - last - 1)
seats = [1, 0, 1, 0, 0, 0, 1]
print(solve(seats))輸入
[1, 0, 1, 0, 0, 0, 1]
輸出
2
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP