Python程式:檢查所有人是否都能獲得座位
假設我們有一個數字n,有n個人正在尋找座位,我們還有一個位列表,其中1表示已佔用座位,0表示空座位。不允許兩個人坐在相鄰的位置,因此我們必須檢查是否所有n個人都能找到座位。
因此,如果輸入類似於n = 2,seats = [1, 0, 0, 0, 1, 0, 0],則輸出為True,因為他們可以坐在索引2和6。
為了解決這個問題,我們將遵循以下步驟:
- 在seats的開頭插入0,並在seats的末尾插入[0, 1]
- res := 0,gap := 0
- 對於seats中的每個i,執行:
- 如果i等於0,則
- gap := gap + 1
- 否則,當gap > 0時,則
- res := res + floor((gap - 1)/2)
- gap := 0
- 如果i等於0,則
- 如果res >= n則返回true,否則返回false
示例
讓我們看看下面的實現,以便更好地理解:
def solve(n, seats): seats = [0] + seats + [0, 1] res = 0 gap = 0 for i in seats: if i == 0: gap += 1 elif gap > 0: res += (gap - 1) // 2 gap = 0 return res >= n n = 2 seats = [1, 0, 0, 0, 1, 0, 0] print(solve(n, seats))
輸入
2, [1, 0, 0, 0, 1, 0, 0]
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP