检查 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 视图

开启您的 职业生涯

完成本课程获得认证

开始
广告
© . All rights reserved.