檢查 Python 中棧或佇列的操作是否可能


假設我們有一個二進位制列表,其中 1 表示入棧操作,0 表示出棧操作,對棧或佇列進行操作。我們必須檢查可能的運算集是否有效。

因此,如果輸入像 nums = [1,0,1,1,0,1],則輸出將為 True,因為序列為 [入棧,出棧,入棧,入棧,出棧,入棧],因為我們不會從空列表中彈出元素,因此這些運算有效。

為了解決這個問題,我們將按照以下步驟操作 -

  • push_count := 0
  • 對於範圍 0 到 nums 大小的 i,操作
    • 如果 nums[i] 為 1,則
      • push_count := push_count + 1
    • 否則,
      • push_count := push_count - 1
    • 如果 push_count < 0,則
      • 返回 False
  • 返回 True

範例

讓我們來看以下實現以獲得更好的理解 -

 線上演示

def solve(nums):
   push_count = 0
   for i in range (len(nums)):
      if nums[i]:
         push_count += 1
      else:
         push_count -= 1
      if push_count < 0:
         return False
   return True
nums = [1,0,1,1,0,1]
print(solve(nums))

輸入

[1,0,1,1,0,1]

輸出

True

更新於: 19-1 月 -2021

132 檢視

開啟您的 職業生涯

完成本課程獲得認證

開始
廣告