given a stack a function isconsecutive takes a stack as a parameter and that returns whether or not the stack contains a sequence of consecutive integers starting from the bottom of the stack returning true if it does returning false if it does not for example bottom 3 4 5 6 7 top then the call of isconsecutives should return true bottom 3 4 6 7 top then the call of isconsecutives should return false bottom 3 2 1 top the function should return false due to reverse order note there are 2 solutions firstisconsecutive it uses a single stack as auxiliary storage secondisconsecutive it uses a single queue as auxiliary storage back up stack from storage stack back up stack from queue case odd number of values in stack not consecutive backup second value back up stack from storage stack case odd number of values in stack not consecutive backup second value back up stack from queue
import collections


def first_is_consecutive(stack):
    storage_stack = []
    for i in range(len(stack)):
        first_value = stack.pop()
        if len(stack) == 0:  
            return True
        second_value = stack.pop()
        if first_value - second_value != 1:  
            return False
        stack.append(second_value)          
        storage_stack.append(first_value)

    
    for i in range(len(storage_stack)):
        stack.append(storage_stack.pop())
    return True


def second_is_consecutive(stack):
    q = collections.deque()
    for i in range(len(stack)):
        first_value = stack.pop()
        if len(stack) == 0:  
            return True
        second_value = stack.pop()
        if first_value - second_value != 1:  
            return False
        stack.append(second_value)          
        q.append(first_value)

    
    for i in range(len(q)):
        stack.append(q.pop())
    for i in range(len(stack)):
        q.append(stack.pop())
    for i in range(len(q)):
        stack.append(q.pop())

    return True