验证栈的压入弹出序列是否正确(剑指offer P134 面试题22)

《剑指offer》面试题22:

修正:
下面的代码更加简洁一点,每次入栈完后有一个快照,看看是否可以弹出,弹出了又是一个快照,需要再次检测。
最后检查栈是否完全弹出,而且pop数组到达最后。

    public static boolean isPushPopSameStack(Integer[] push, Integer[] pop){
        Stack stack = new Stack();
        
        int pop_length = pop.length;
        int pop_index = 0;
        for(int i=0;i

以前的代码,没有那么简洁。

def StackOrderRight(data_push=[1,2,3,4,5],data_pop=[2,1,3,5,4]):
    stack = []
    stack_ptr = -1
    data_has_push = 0
    data_has_pop = 0

    while data_has_push < len(data_push):
        stack.append(data_push[data_has_push])
        stack_ptr += 1
        data_has_push += 1

        while stack_ptr>=0 and stack[stack_ptr] == data_pop[data_has_pop]:
            del stack[stack_ptr]
            stack_ptr -= 1
            data_has_pop += 1

    while stack_ptr >= 0 and stack[stack_ptr] == data_pop[data_has_pop]:
        stack.remove(stack_ptr)
        stack_ptr -= 1
        data_has_pop += 1

    if data_has_pop == len(data_pop):
        return True
    else:
        return False

你可能感兴趣的:(验证栈的压入弹出序列是否正确(剑指offer P134 面试题22))