Antiguo Wei gana la oferta que le llevará a conocer --- Título de la serie cepillo (pulsador 21 pila, secuencia emergente)

21. El empuje pila, secuencia de pop

problema:

Dos secuencia de entrada de números enteros, la primera secuencia que representa un orden de apilamiento prensado, determina si es posible para la segunda secuencia de la orden de la pila emergente. Todas las cifras no se insertan en la pila se supone igual. Tal como se pulsa una secuencia de una secuencia de 1,2,3,4,5 en la pila, la secuencia de empuje es 4,5,3,2,1 secuencia correspondiente a una secuencia de oposición, pero 4,3,5,1,2 es imposible empujar secuencia emergente de la secuencia. (Nota: la longitud de las dos secuencias son iguales)

solución:

pensado:

Borrow una pila auxiliar, orden de recorrido de empuje, en una primera conversación sobre la pila, aquí 1, se determina a continuación, el elemento superior no está fuera de la primera orden de apilamiento elemento, esto es 4, es evidente que a ≠ 4 así que continuamos empujando hasta después del inicio de una pila de igualdad, la pila es un elemento, se moverá hacia atrás una, hasta que la orden no es igual a la pila, por lo que el recorrido de ciclo de pedido Yazhan es completa, si la pila auxiliar no está vacía secuencia descrita no es la secuencia de la pila pop pop.

Por ejemplo:

dibujo 1,2,3,4,5

pila 4,5,3,2,1

1 en la primera pila auxiliar, cuando la pila 1 ≠ 4, continuación pila 2

En este momento, la pila 2 ≠ 4, continuar para apilar 3

En este momento, la pila 3 ≠ 4, 4 continúan pila

En este momento, la pila 4 = 4, la pila 4, una parte posterior secuencia de pop-up, en este caso la pila auxiliar 5 en el interior 1,2,3 ,,

En este momento, la pila 3 ≠ 5, 5 continúan empujando

5 = En este punto la pila 5, la pila 5, una parte posterior secuencia de pop-up, en este caso la pila auxiliar 3, que es 2,3 ,,

....

Seguido por la aplicación, y, finalmente, la pila auxiliar está vacía. Si no está vacía secuencia emergente descrito no es la secuencia de la pila pop.

código Python:

# -*- coding:utf-8 -*-
class Solution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        if not pushV or len(pushV)!=len(popV):
            return False
        stack=[]
        for i in pushV:
            stack.append(i)
            while(len(stack) and stack[-1]==popV[0]):
                stack.pop()
                popV.pop(0)
        if(len(stack)):
            return False
        return True
Publicados 160 artículos originales · elogios ganado 30 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/yixieling4397/article/details/104921036
Recomendado
Clasificación