题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
AB2 栈的压入、弹出序列
思路:
step1:定义一个辅助栈stack;创建一个计数器并置零:j=0;
step2:逐个将pushV的元素添加到辅助栈stack中,添加过程中如果stack的最后一个元素与popV中第j个元素相同,则将该元素弹出stack栈中,并且计数器+1;
step3:如果最后,j == len(popV),则证明全部元素都在内,满足要求;
代码如下:
class Solution:
def IsPopOrder(self , pushV: List[int], popV: List[int]) -> bool:
j = 0
stack = []
for i in pushV:
stack.append(i)
while stack != [] and stack[-1] == popV[j]:
stack.pop()
j += 1
return j == len(popV)