检查堆栈的元素是否在Python中成对排序
假设我们有一堆数字;我们必须检查堆栈中的值是否成对连续。这些对可以增加或减少。如果堆栈具有奇数个值,则顶部元素被排除在一对之外。并且我们应该在检查后保留原始堆栈内容。
为了解决这个问题,我们可以在栈上使用push、pop和检查栈是否为空三个操作。
因此,如果输入类似于stk=[5,6,-4,-5,12,11,6,7,22],那么输出将为True,因为在删除顶部元素22后,对是[(5,6),(-4,-5),(12,11),(6,7)]都是连续的。
为了解决这个问题,我们将按照以下步骤操作-
temp:=从stk弹出元素并推入temp
清空栈stk
标志:=真
而温度的大小>1,做
标志:=假
item_first,item_second:=temp的前两个元素并弹出它们
如果|item_first-item_second|不是1,那么
将item_first和item_second推入stk
如果temp的大小与1相同,则
将温度的顶部推入stk
返回标志
让我们看看以下实现以获得更好的理解-
示例代码
def solve(stk):
temp = stk[::-1]
stk.clear()
flag = True
while len(temp) > 1:
item_first = temp[-1]
temp.pop()
item_second = temp[-1]
temp.pop()
if abs(item_first - item_second) != 1:
flag = False
stk.append(item_first)
stk.append(item_second)
if len(temp) == 1:
stk.append(temp[-1])
return flag
stk = [5, 6, -4, -5, 12, 11, 6, 7, 22]
print(solve(stk))输入
[5, 6, -4, -5, 12, 11, 6, 7, 22]输出结果
True