使用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

更新於:2021年10月5日

瀏覽量:352

開啟你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.