使用Python查詢獲得食物包的人數的程式
假設在一個會議上,有兩種人。第一種人喜歡素食午餐,另一種人喜歡非素食午餐。但是食物包的數量有限,如果素食者收到非素食包,反之亦然,他們將不會接受該包,而會等到獲得他們喜歡的包為止。因此,兩種不同的食物包和人都用0表示素食,用1表示非素食。現在我們得到兩個陣列,一個包含n個食物包(用0和1表示),另一個數組包含m個人的佇列,他們的喜好也用0和1表示。如果一個人沒有收到他們喜歡的包,他們會重新排到佇列的末尾,等待他們喜歡的包。所以,我們必須找出沒有食物包的人數,以便我們可以安排他們喜歡的包。
所以,如果輸入是這樣的:people = [0,1,1,0], packets = [0, 1, 0, 0],那麼輸出將是1。
有兩個偏好非素食的人,只有一個非素食包。佇列中第一個偏好非素食的人得到那個包,而另一個人繼續等待,因為沒有其他的非素食包。所以,輸出是1。
為了解決這個問題,我們將遵循以下步驟:
temp_arr := 一個新的列表,包含值0和0
對於people中的每個人,執行以下操作:
temp_arr[person] := temp_arr[person] + 1
k := 0
當k < packets的大小,執行以下操作:
如果temp_arr[packets[k]] > 0,則
temp_arr[packets[k]] := temp_arr[packets[k]] - 1
否則,
退出迴圈
k := k + 1
返回packets的大小 - k
示例
讓我們看看下面的實現,以便更好地理解:
def solve(people, packets):
temp_arr = [0,0]
for person in people:
temp_arr[person] += 1
k = 0
while k < len(packets):
if temp_arr[packets[k]]>0:
temp_arr[packets[k]]-=1
else:
break
k += 1
return len(packets) - k
print(solve([0,1,1,0], [0, 1, 0, 0]))輸入
[0,1,1,0], [0, 1, 0, 0]
輸出
1
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP